gpt4 book ai didi

.net - "Good"发布配置中的 ASP.net 堆栈跟踪或如何获取有问题的代码

转载 作者:行者123 更新时间:2023-12-01 13:08:57 25 4
gpt4 key购买 nike

如果我有一个在 ASP.net 上运行的应用程序,并且我在 web.config 中启用了调试和堆栈跟踪,我会得到一个非常好的错误屏幕,告诉我究竟是哪个代码导致了错误。

可悲的是,在 debug 设置为 false 的实时系统上,死机的黄色屏幕非常无用,即使启用了堆栈跟踪,它也不会显示错误发生的行(这看起来很明显,因为应该没有 debug信息)。

我只是想知道是否有一种方法可以在不启用 web.config 文件中的 debug=true 的情况下获得有关错误的良好信息。它不一定是蓝屏上的改进,我也可以将我怀疑冒犯的代码包装在 try..catch block 中,但是在 catch block 内,有没有办法获取实际代码导致错误?

您可能会怀疑,这是针对仅在生产中发生错误并且没有可用的远程调试器的情况:(

编辑:这是关于“正常”异常,如 System.ArgumentOutOfRangeException。如果有更好的方法只是为了在异常实际发生的地方获取更多信息,我想避免在代码中乱扔日志。

最佳答案

遇到这种情况我要做的第一件事就是向 global.asax 添加一个全局异常处理程序,例如:

    protected void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
Log.WriteException(ex); // this is your code
}

您也可以在页面级别执行类似的操作,但我认为您最好在应用程序级别执行此操作。当您将异常写入日志时,您还可以写入更多信息以帮助您重现错误,例如请求参数或 session 信息。

另一个好的做法是将这样的部分添加到您的 web.config 中:

  <customErrors mode="On" defaultRedirect="error.html">
<error statusCode="500" redirect="500.aspx"/>
<error statusCode="404" redirect="404.aspx"/>
<error statusCode="403" redirect="403.aspx"/>
</customErrors>

这将显示所有未知错误的 error.html,并显示您为某些特定错误定义的相应页面,您可以在其中为用户提供有关如何解决错误或帮助他们找到他们想要的内容的更多信息正在寻找。

asp.net 中的错误处理是一个相当大的话题,但这应该是一个很好的起点。

关于.net - "Good"发布配置中的 ASP.net 堆栈跟踪或如何获取有问题的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/601788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com