我想将简单的html页面添加为IIS的自定义错误。
所以我将404.html
和500.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 +
答案 0 :(得分:4)
Documentation这个设置很笨拙。
如果 httpErrors 错误元素的 responseMode 设置为文件,路径被视为文件路径(使用\来分隔目录)。
路径需要相对于包含此设置的web.config文件的目录。
如果html文件位于主目录(site 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>