我想添加简单的 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
时,我只会收到错误消息 您正在寻找的资源已被删除、名称已更改或暂时不可用。
这不是我的。
对于 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+
最佳答案
Documentation这个设置很笨拙。
如果 httpErrors error 元素的 responseMode 设置为 File,path被视为文件路径(使用\分隔目录)。
路径需要相对于包含具有此设置的 web.config 文件的目录。
如果 html 文件位于主目录(站点根目录\Home\404.html)并且
https://stackoverflow.com/questions/32138200/