ResponseMode =“文件”无法正常工作

时间:2015-08-21 10:36:13

标签: asp.net asp.net-mvc iis custom-error-pages http-error

我想将简单的html页面添加为IIS的自定义错误。 所以我将404.html500.html页面添加到项目并添加下一个配置:

<httpErrors errorMode="Custom" existingResponse="Replace">
    <remove statusCode="404" />
    <remove statusCode="500" />
    <error statusCode="404" path="404.html" responseMode="File" />
    <error statusCode="500" path="500.html" responseMode="File" />
</httpErrors>

Html页面位于Views/Shared文件夹中。 但每次当我进入一些不存在的路径/foo/bar时,我只会收到错误消息The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.,而不是我的。{/ p>

对于ASP.Net的自定义错误,我添加下一个配置:

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Home/404">
    <error statusCode="404" redirect="~/Home/404" />
    <error statusCode="500" redirect="~/Home/500" />
</customErrors>

并从FilterConfig文件中删除filters.Add(new HandleErrorAttribute());这一行。

我发现在正确的html网页路径中可能出现问题或将/更改为\,但我找到的解决方案没有帮助我。

我使用IIS7 +

2 个答案:

答案 0 :(得分:4)

Documentation这个设置很笨拙。

如果 httpErrors 错误元素的 responseMode 设置为文件路径被视为文件路径(使用\来分隔目录)。

路径需要相对于包含此设置的web.config文件的目录。

如果html文件位于主目录(site root \ Home \ 404.html)和

  • web.config位于网站root中,路径为 Home \ 404.html
  • web.config位于网站root \ Home中,路径为 404.html

答案 1 :(得分:0)

我用这个

 <httpErrors errorMode="Custom">
      <remove statusCode="404" />
      <remove statusCode="400" />
      <remove statusCode="401" />
      <error statusCode="404" path="Views\Erro\PaginaNaoEncontrada.html" responseMode="File" />
      <error statusCode="400" path="Views\Erro\RequisicaoInvalida.html" responseMode="File" />
      <error statusCode="401" path="Views\Erro\AcessoNegado.html" responseMode="File" />
    </httpErrors>