在我的web.config中,我没有像CustomErrors那样的东西。因为我希望Global.asax能够处理所有事情。
这是我的web.config:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation targetFramework="4.5" debug="false"/>
<authentication mode="Forms" >
<forms loginUrl="login.aspx" name=".ASPNETAUTH" protection="None" path="/" timeout="20" >
</forms>
</authentication>
<httpRuntime requestPathInvalidCharacters="<,>,:,\,?" targetFramework="4.5" maxRequestLength="1048576"/>
<httpModules>
<add name="ImageResizingModule" type="ImageResizer.InterceptModule"/>
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule"/>
<remove name="UrlAuthorization"/>
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule"/>
<add name="ImageResizingModule" type="ImageResizer.InterceptModule"/>
</modules>
<security>
<requestFiltering allowDoubleEscaping="true">
</requestFiltering>
</security>
</system.webServer>
</configuration>
这是Global.asax中的Application_Error事件:
void Application_Error(object sender, EventArgs e)
{
try
{
Response.Redirect("~/error.html");
}
catch
{
}
}
我需要web.config吗?
答案 0 :(得分:0)
我建议您在web.config中使用CustomErrors部分来完成此任务。
也许还可以看一下:Is global.asax Application_Error event not fired if custom errors are turned on?
例如,您可以尝试将此添加到您的web.config中。请注意,我没有测试它,只是将它从上述帖子中复制到一起:
<customErrors defaultRedirect="~/error.html" mode="RemoteOnly">
</customErrors>
关于该主题和您拥有的选项实际上有一篇非常好的博客文章: http://www.codeguru.com/csharp/.net/net_debugging/article.php/c19411/Web-Application-Error-Handling-in-ASPNET.htm
根据我在上面(及相关)文章中收集到的内容,我几乎猜到,你需要在Application_Error中调用Server.ClearError
,否则错误会冒泡到web.config错误处理,默认情况下,从远程查看应用程序时将显示友好的错误消息。 (值为&#34; RemoteOnly&#34;)。