IIS7.5 Server.ClearError()不起作用

本文关键字:不起作用 ClearError Server IIS7 | 更新日期: 2023-09-27 18:22:24

我试图修复XSS漏洞,我用try-catch块包围了我的代码,以处理HttpRequestValidationException

由于隐私原因,我无法共享整个代码。以下代码来自ASP.NET页面的Page_Load()方法中调用的函数。

这是我的挡块。

    // A long try block was here ...
    catch (HttpRequestValidationException)
    {
        // ASP.NET, let me handle this one.
        Server.ClearError();
        Response.Write(Messages.ParameterValidationError);
    }

这在localhost上按预期工作,但当我在IIS上发布代码时,会从一个临时asp.net类中抛出另一个HttpRequestValidationException(请参见下文)。

Path to the wild class : '...'Temporary ASP.NET Files'<app_name>'5d4b8059'5739b33c'App_Web_n1jnrwmr.0.cs'

当我不使用Server.ClearError()时,这个问题也会出现在localhost上。

我需要显示一个用户友好的错误消息,而不是那个令人恼火的异常页面。

感谢您的帮助!

IIS7.5 Server.ClearError()不起作用

为什么不在web配置中使用自定义错误的标准ASP.NET错误处理方法并定义自定义错误页面?如果您想在global.asax中记录异常,请添加方法Application_Error,该方法将在未处理的异常上调用(请参阅下面的代码示例)。

如果您不调用"Server.ClearError()",则ASP.NET将使用自定义错误中定义的错误页,并自动将用户重定向到那里。

protected void Application_Error(object sender, EventArgs args)
{
    var exception = this.Server.GetLastError();
    Logger.Log(exception);
}
<system.web>
      <customErrors mode="Off" defaultRedirect="~/error/notification">
        <!-- Required for HandleErrorFilter -->
        <error statusCode="404" redirect="~/error/notfound" />
      </customErrors>