平常程序遇到错误,开发环境下一般都用调试搞定,生产环境下通过查看日志搞定。但也有搞不定的时候,这是我在Silverlight开发时遇到的的错误:
如果启用调试,"对不起,程序已经崩溃,无法附加到进程"。怎么办?提示信息太少,盲目怀疑程序哪里写的不对,只会使问题变得更糟,拖延了解决问题的时间。
异常排查此时我们应该查看是哪一个请求引起的错误,方法就是使用浏览器的开发者工具:IE8以上按f12,chrome按下ctrl+shift+I,转到“网路”,开始捕捉:
这里我们得到的是一个500错误,知道了是请求.svc时出错了。双击查看响应正文或者直接复制请求url到浏览器访问可以得到更详细的出错信息:
我们看到调用堆栈还没有开始调用我们的代码,和我们自己的代码没有关系。此时去google(程序猿果断放弃baidu吧),没有找到任何解决问题的方法。我们只能根据自己程序的实际情况,判断是DomainService出的问题。因为平时按部就班写的程序根本不出现这种错误,但这次是引用的类库中的DomainService,所以一定是漏掉了什么dll导致的。最偷懒的解决方法:手动添加一个“域服务类”到工程,VS自动添加所需dll,并配置好了web.config。再次运行,问题解决了。
结论最怕遇到这种错误提示很少的的错误,因为莫名其妙,无从查起,让人抓狂。有时一个错误一下午就浪费过去了,还不一定解决。方法还是具体问题具体分析,根据程序的实际情况,结合自己的成功经验,多google,一定能解决的。当然如果自己解决了又google不到的最好发到cnblogs,作为前车之鉴服务大家,这也是写技术博的猿最愿意做的事吧。