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上。
我需要显示一个用户友好的错误消息,而不是那个令人恼火的异常页面。
感谢您的帮助!
为什么不在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>