1

我有以下代码来处理我的错误

Application_Error 中的 Global.asax.cs

Exception exception = Server.GetLastError();
if (exception != null)
{
    //Log the error
}

但是,我也有自定义错误页面,我重定向到上面以及来自 web.config - 我这样做是因为 Application_Error 似乎没有捕获所有发生的错误?

所以在我的 Page_Load 错误页面中我有这个代码

Exception exception = Server.GetLastError();                
string exInnerExp = "";
if (exception != null)
{
    exInnerExp = exception.InnerException.ToString();
    //Log error
}

这永远行不通?我不知道为什么,对此的任何帮助都非常感谢。

谢谢

编辑 在我的 web.config 我有以下代码:

<customErrors mode="RemoteOnly">
   <error redirect="http://www.example.com/errorpages/404.aspx" statusCode="404" />
   <error redirect="http://www.example.com/errorpages/siteerror.aspx" statusCode="500" />
</customErrors>

<httpErrors>
   <remove statusCode="500" subStatusCode="-1" />
   <remove statusCode="404" subStatusCode="-1" />
   <error statusCode="404" prefixLanguageFilePath="" path="/errorpages/404.aspx" responseMode="ExecuteURL" />
   <error statusCode="500" prefixLanguageFilePath="" path="/errorpages/siteerror.aspx" responseMode="ExecuteURL" />
    </httpErrors>

编辑

最初我虽然 Application_Error 没有被击中,但后来我发现一段代码只有在 Server.GetLastError() 不为空时才实际运行。所以现在我的问题略有改变,Server.GetLastError() 在 Application_Error 事件中为空。例如,这可能发生在哪里:

我有一个完美运行的已构建项目,如果我转到 UserControl 并更改 asp:TextBox 的 ID,则页面将不会加载并抛出错误,不会捕获此错误。

4

0 回答 0