我试图修复XSS漏洞,我在代码中包围了一个try catch块来处理HttpRequestValidationException。
由于隐私原因,我不能共享整个代码。下面的代码来自在Page_Load()页面的ASP.NET方法中调用的函数。
这是我的接球区。
// A long try block was here ...
catch (HttpRequestValidationException)
{
// ASP.NET, let me handle this one.
Server.ClearError();
Response.Write(Messages.ParameterValidationError);
}这在本地主机上可以正常工作,但是当我在IIS上发布代码时,会从临时的HttpRequestValidationException类抛出另一个asp.net (参见下面)。
Path to the wild class : '...\Temporary ASP.NET Files\<app_name>\5d4b8059\5739b33c\App_Web_n1jnrwmr.0.cs'当我不使用Server.ClearError()时,这个问题也会发生在本地主机上。
我需要显示一个用户友好的错误信息,而不是那个恼人的异常页面。
任何帮助都是感激的,谢谢!
发布于 2014-09-19 10:37:13
为什么不只是在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>https://stackoverflow.com/questions/25929825
复制相似问题