IIS覆盖ASP.NET中的自定义404错误页面

我正在尝试创建一个404错误页面,目前我已经拥有以下所有内容/尝试了以下所有内容来尝试完成此操作。 当用户键入时:

HTTP://name/something.aspx

它就像它应该的那样工作。 但是如果用户键入:

HTTP://名称/ NotAFile

没有.aspx然后IIS7自己动手,我得到了IIS7附带的可爱错误页面。 目标是网站仅重定向404状态代码(因此不是200或302重定向)。 我在web配置中尝试过:

   

这适用于具有.aspx文件扩展名的URL,但不适用于没有扩展名的URL。 与global.asax中的此方法相同

 void Application_Error(object sender, EventArgs e) { var serverError = Server.GetLastError() as HttpException; if (serverError != null) { if (serverError.GetHttpCode() == 404) { Server.ClearError(); Server.Transfer("~/error/NotFound.aspx"); } Server.Transfer("~/error/Default.aspx"); } } 

对此有相同的结果:(我最后的尝试是将此应用到Web配置:

    

有了这个我只是得到一个没有任何东西的纯白色屏幕……任何想法或评论将不胜感激! 提前致谢!

您的应用程序似乎在经典管道模式下运行。 将其更改为集成,您的问题将得到解决。 这是一篇关于管道模式及其差异的文章 – http://learn.iis.net/page.aspx/508/wildcard-script-mapping-and-iis-7-integrated-pipeline/

以下代码适用于.aspx和其他文件类型:

Global.asax中

 void Application_Error(object sender, EventArgs e) { var serverError = Server.GetLastError() as HttpException; if (serverError != null) { if (serverError.GetHttpCode() == 404) { Server.ClearError(); Response.Redirect("~/NotFound.aspx?URL=" + Request.Url.ToString()); } Response.Redirect("~/Default.aspx"); } } 

Web.config文件

    

对于经典的asp你可以使用它

       
       

使用配置中的代码并提供错误页面的完整路径