从ASP.NET黄色错误页面直接链接到VS源代码
当ASP.NET应用程序出错并生成黄屏显示时,我想从错误页面创建某种链接,该链接将直接跳转到Visual Studio中的正确代码行。
我不确定如何解决这个问题,或者不确定是否已经有工具可以完成此任务,但是我很乐意从何处入手。
如果需要生成新的错误页面,是否可以在整个Web服务器上替换标准的黄色屏幕,而不必为每个应用程序配置自定义的错误输出?
解决方案
回答
我们可能需要在页面中嵌入ActiveX控件,这样才能实现。
回答
死亡的黄屏由默认的ASP.NET HTTPHandler提供。
为了拦截它,我们需要在它前面添加另一个HTTPHandler来拦截所有未捕获的异常。
那时,我们可以为错误布局做任何想做的事情。
创建直接跳转到Visual Studio的方法将很棘手。我可以看到它通过COM / ActiveX对象在IE中完成。
回答
我能想到的最简单,最懒惰的事情就是让流程如此发生:
- 黄屏被修改,因此该行是源代码,可单击。单击后,它会提供一个带有源文件名和行号的小型文本文件。
- PC上的一个小程序与该小文件的扩展名相关联,可通过黄色屏幕下载该文件。该程序使用Visual Studio的可扩展性模型打开源文件并转到该行。该程序可能需要知道源代码在哪里。
简单的Google搜索
给出了有关如何使用外部程序(如MSDN上的这篇文章)操纵VS的有用指导。
如果我们想变得更加时髦,那么当然还有其他方法,但是我宁愿写出一个快速而肮脏的程序,并摆脱它,这样我才能从事我的生意。
不要让工具成为项目...
-亚当
回答
就服务器而言,黄色的死亡屏幕只是500个错误,我们可以使用web.config的error部分重定向到自定义屏幕。要以相同的方式更改整个服务器,我们可能会在iis级别覆盖它?甚至甚至可以在machine.config文件中设置默认行为(尽管不能100%确定该行为)
回答
The yellow screen of death is just a 500 error as far as the server is concerned, you can redirect to a custom screen using the error section of the web.config. To make a whole server change in the same manner you could probably override it at the iis level? Or perhaps even set the default behaviour in the machine.config file (not 100% sure about that one though)
如果让它一直冒泡到IIS,我们将无法访问异常信息。最好在YSOD之前捕获Exception并为我们自己服务。
这可以在应用程序级别完成。
回答
不要忘记,我们需要Program Debug Database(pdb)文件来查找源代码行号。处于发布模式的应用程序将不具有与调试版本相同的信息级别。