C# 如何在生产过程中查看ASP.NET异常?

C# 如何在生产过程中查看ASP.NET异常?,c#,asp.net-mvc,C#,Asp.net Mvc,我的ASP.NET web应用程序的后端在生产过程中(但在本地调试时)引发异常 理想情况下,我希望将异常输出到一个文本文件中,然后可以读取该文件。这就是我迄今为止所尝试的: catch (Exception ex) { string exceptionString = ex.ToString(); string errorLogPath = HttpContext.Current.Server.MapPath("~/Server/LogFiles"); StreamWr

我的ASP.NET web应用程序的后端在生产过程中(但在本地调试时)引发异常

理想情况下,我希望将异常输出到一个文本文件中,然后可以读取该文件。这就是我迄今为止所尝试的:

catch (Exception ex)
{
    string exceptionString = ex.ToString();
    string errorLogPath = HttpContext.Current.Server.MapPath("~/Server/LogFiles");

    StreamWriter sw = new StreamWriter(errorLogPath + '\\' + "logs.txt", true);

    sw.WriteLine(exceptionString);
    sw.Close();
}
当我转到logs.txt文件时,那里什么都没有。我很确定有一个异常被捕获,所以我不明白为什么它没有被写入文本文件。也许我的代码错了


在不附加调试器的情况下,查看生产中抛出的后端异常的最佳方法是什么

我的问题已经解决了

  • 日志写入问题确实是由于缺少权限导致的,这将不允许StreamWriter在目录上写入。帮助更新权限。附带说明:引发的异常也是由于缺少权限造成的

  • 供将来参考:Elmah似乎非常有用,可以轻松读取生产中抛出的异常。你甚至可以看到熟悉的死亡黄屏。它可以很容易地添加。对于将Elmah添加到我的MVC项目非常有帮助


运行应用程序池的用户帐户是否有权限写入该位置的文件系统?如果没有,您尝试写入日志文件可能会引发另一个异常如果此代码被命中(我们无法判断),则此代码可能会引发另一个异常,即无法写入指定目录。不要重新发明日志,使用日志库。只需搜索“asp.net错误处理”就可以找到很多方法。请查看或使用log4net之类的日志工具或common.logging之类的抽象日志工具如果您只想查看异常,只需将异常发送到错误视图。为什么要将其写入日志文件?为什么不尝试重构代码,并使用(StreamWriter sw=new StreamWriter(errorLogPath+“\\”+logs.txt.true)){}将流媒体包装成
,如果要使用单个反斜杠
,请注意如何使用
“\\\”
,它应该是文本“@”\“
“\\\”
“\\\”
之间有一个区别,还可以将代码添加到
Flush
streamwriter中,这样当您打开它时,您可以立即看到写入日志文件的错误。关于ELMAH,实际上有很多附加功能没有在您链接到的指南中描述。这应该是更完整的,而且是相当好的。