找不到资源 404 响应代码并使用 web.config 文件重定向到自定义页面

Lea*_*ner 2 asp.net

当用户请求不存在的 .aspx 页面时,我知道如何在 asp.net web.config 文件中使用自定义错误,如下所示;

       <customErrors mode="On" defaultRedirect="/error.aspx">
            <error statusCode="404" redirect="/error.aspx"/>
        </customErrors>
Run Code Online (Sandbox Code Playgroud)

并且对我来说工作正常,但是当我尝试访问不存在的静态资源(例如 test.htm)时,IIS 为我提供了蓝屏死机。

如果有人知道如何在用户请求不存在的资源时将用户重定向到自定义页面说 resourcenotfound.aspx,那么请建议我。

提前致谢。

Tom*_*mmy 5

您在何处实现自定义错误只会影响通过 ASP.NET 管道(例如 .aspx 文件)运行的内容。默认情况下,IIS 不会通过 ASP.NET 管道发送对静态文件(.html、.htm、.css、.js)的请求。结果,您将获得标准的 IIS 错误页面(蓝色页面,黄色页面用于 ASP.NET 错误)。

为了覆盖任何响应的 IIS 标准错误文件,您需要使用<httpErrors>元素中的<system.webServer>元素。

<configuration>
   <system.webServer>
      <httpErrors errorMode="Custom" existingResponse="Replace">
         <remove statusCode="404" subStatusCode="-1" />
         <error statusCode="404" path="Error.aspx" responseMode="ExecuteURL"/>
      </httpErrors>
   </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

此答案的详细信息取自IIS 官方网站和此博客条目

  • 谢谢。这就是我要找的! (3认同)