gpt4 book ai didi

asp.net - ASP.NET应用程序错误覆盖404?

转载 作者:行者123 更新时间:2023-12-03 07:40:08 26 4
gpt4 key购买 nike

我使用Application_Error事件捕获并记录我的应用程序中的错误。记录错误,然后显示友好的错误屏幕:

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim ex As New Exception( _
String.Format("Error on page: '{0}'.", HttpContext.Current.Request.Url), _
Server.GetLastError())

Dim uid As Guid = Log.FatalError(ex)
Server.Transfer(String.Concat("~\\GlobalError.aspx?error=", uid))
End Sub

在我的web.config中,我有:
<customErrors mode="On" defaultRedirect="GlobalError.aspx">
<error statusCode="404" redirect="PageNotFound.aspx" />
</customErrors>

每当用户尝试加载不存在的页面时,他们都会获得GlobalError.aspx页面,而不是PageNotFound.aspx页面。我查看了Application_Error事件,发现Response StatusCode为200,而服务器的最后一个错误是“找不到页面'foo.aspx'”。

我需要怎么做才能使其正常工作?

最佳答案

在Application_Error函数中,如果错误不是找不到页面/404错误,则应该仅使用Server.Transfer。在这种情况下,请使用web.config中的设置将其留给ASP.NET进行重定向。

您可以使用以下命令确定它是否为404:

Exception ex = Server.GetLastError();
if (ex.GetType() == typeof(HttpException))
{
HttpException httpEx = (HttpException)ex;
if(httpEx.GetHttpCode() == 404) {
return;
}
}
Server.Transfer("~/error.aspx");

关于asp.net - ASP.NET应用程序错误覆盖404?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1127495/

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