我有一个在 IIS 7.5 上运行的 C# WCF 应用程序。
如果抛出异常,我会得到通用请求失败页面。为了找到有罪的代码,我想获得一个完整的堆栈跟踪,包括行号和文件名。我怎样才能做到这一点?
堆栈是直接返回还是内部记录在服务器上并不重要,只要我能看到导致错误的原因。
更新:感谢到目前为止的答案。不幸的是,我是 IIS/c# 新手。有教程或分步说明吗?到目前为止,我不知道如何处理这些答案。
我有一个在 IIS 7.5 上运行的 C# WCF 应用程序。
如果抛出异常,我会得到通用请求失败页面。为了找到有罪的代码,我想获得一个完整的堆栈跟踪,包括行号和文件名。我怎样才能做到这一点?
堆栈是直接返回还是内部记录在服务器上并不重要,只要我能看到导致错误的原因。
更新:感谢到目前为止的答案。不幸的是,我是 IIS/c# 新手。有教程或分步说明吗?到目前为止,我不知道如何处理这些答案。
您可以在代码中使用几个事件处理程序来调用一些日志记录功能
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
和
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
此外,您应该includeExceptionDetailInFaults=true
在服务行为配置中进行设置
您可以提供更多信息FaultExceptions
http://msdn.microsoft.com/en-us/library/ms576199.aspx
一些例子:
http://www.c-sharpcorner.com/uploadfile/afenster/wcf-error-handling-and-faultexceptions/
我在版本 4 的http://stackdump.codeplex.com/项目中添加了一个名为 ExceptionTrace 的程序。1 Beta 版将跟踪所有生成的异常,而无需对代码进行任何更改。它仅将自己附加为调试器并侦听所有生成的异常。
在 Try-Catch 语句中调用以记录错误。ASP.Net Tracing功能非常适合这项任务。
或者将异常冒泡到传入并记录Exception.StackTrace
.
AppDomain.CurrentDomain.UnhandledException
使用@paul 提及的方式一举搞定。