如何在ASP.NET中使用指定的statusCode重定向到自定义错误页面?

时间:2011-06-29 08:56:39

标签: .net asp.net custom-errors

我在web.config上有这个:

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
    <error statusCode="403" redirect="NoAccess.htm" />
    <error statusCode="404" redirect="FileNotFound.htm" />
<customErrors/>

我如何告诉asp.net我的statusCode = 404并将我重定向到NoAccess.htm? 在Global.asax Application_Error上我已经尝试过这一行:

Response.StatusCode = 400

但它仍然将我重定向到默认值GenericErrorPage.htm。

有没有办法显式设置状态代码,以便ASP.NET将我重定向到我想要的自定义错误页面?

1 个答案:

答案 0 :(得分:4)

如果您想从global.asax执行此操作,请尝试以下内容

protected void Application_Error(object sender, EventArgs e)
{
   HttpContext ctx = HttpContext.Current;
   Exception ex = ctx.Server.GetLastError();

   if (ex is HttpRequestValidationException)
   {
       ctx.Server.ClearError();
       ctx.Response.Redirect("/validationError.htm");
   }
   else
   {
        ctx.Server.ClearError();
        ctx.Response.Redirect("/NoAccess.htm"); 
   }      
}