首先,问题是: 我有几个免费项目,并且任何软件都包含bug.一些用户在遇到bug时会向我发送一个带有堆栈跟踪的bug报告.为了简化查找故障位置,我想在此堆栈跟踪中查看行号.如果应用程序没有.pdb文件,那么所有行信息都会丢失,因此目前我的所有项目都部署了.pdb文件,因此生成的堆栈跟踪具有此数字.但!但我不希望在发行版中看到这些文件,并希望删除所有.pdb.它们会混淆用户,消耗安装程序中的空间等.
Delphi解决方案: 很久以前当我是delphi程序员时,我使用了以下技术:例外我的应用程序在堆栈上行走并收集地址.然后,当我收到错误报告时,我使用了一个工具,根据收集的地址和位于MY机器上的相应符号文件,使用函数名称和行号重建有效的堆栈跟踪.
问题: 在.NET中是否有任何lib,或技术或其他任何相同的操作?
状态更新:非常有趣,经常提出问题是开始自己调查的最佳方式.例如,我想了一段时间这个问题,但几天前才开始寻找答案.
选项1:MiniDumps.经过大量的谷歌搜索后,我找到了一种从代码创建迷你转储的方法,以及如何从托管小型转储中重新创建堆栈.
然而,该解决方案需要重新分配两个额外的组件(大小约为1mb),并且小型转储占用一些空间,并且用户通过电子邮件发送它们是不舒服的.所以对于我的目的,现在,这是不可接受的.
选项2:感谢weiqure的线索.可以为每个堆栈帧提取受管理的IL偏移量.现在问题是如何根据此偏移从.pdb获取行号.我发现了什么:
使用此工具,可以为每个发布版本创建xml文件并将它们放入repositary.当用户的机器上发生异常时,可以创建带有IL偏移的格式化错误消息.然后用户通过邮件发送此消息(非常小).最后,可以创建一个简单的工具,从格式化的错误消息重新创建结果堆栈.
我只是想知道为什么没有其他人没有实现这样的工具?我不相信这只对我有意义.
我在IIS6服务器上部署的站点有问题.这里的问题,当我第一次将asp.net 3.5站点部署到服务器(站点相对较小,有5个页面和5个库中的bin)时,它按预期工作.但经过一段时间(~1h)服务器返回黑页而不是预期的内容:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8"></HEAD>
<BODY></BODY></HTML>
Run Code Online (Sandbox Code Playgroud)
首先我的想法是我的网站与托管在同一服务器上的其他.net 2.0网站冲突,因此我将我的网站放入专用池但没有成功.第一次网站工作,然后没有.在iis日志中没有错误或类似的错误.我不在我的网站中使用ClearError()方法.
我在这里找到了类似的问题(我使用经典ASP,IIS6和WinServer 2003 R2获取空白页而不是错误消息),但它适用于经典ASP.
ASP.NET的几个主题:
但是这个解决方案对我没有帮助.例如,当我用新的替换web.config,或用重建的一个替换其中一个必需的程序集时,我得到相同的结果.第一次网站工作,然后 - 黑页.
从我看来,我认为这是一种配置问题,但我现在完全震惊,因为我已经尝试了一切,现在我缺乏任何想法,所以非常感谢帮助.