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

时间:2014-07-09 02:37:45

标签: asp.net

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

       <customErrors mode="On" defaultRedirect="/error.aspx">
            <error statusCode="404" redirect="/error.aspx"/>
        </customErrors>

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

如果有人知道如何在用户请求非现有资源时将用户重定向到自定义页面,请说资源名称是资源,请建议我。

提前致谢。

1 个答案:

答案 0 :(得分:3)

实现自定义错误的位置只会影响通过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>

此答案的详细信息来自official IIS website和此blog entry