asp.net - ResponseMode ="File"不工作

我想添加简单的 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 时,我只会收到错误消息 您正在寻找的资源已被删除、名称已更改或暂时不可用。 这不是我的。

对于 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 设置为 Filepath被视为文件路径(使用\分隔目录)。


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

如果 html 文件位于主目录(站点根目录\Home\404.html)并且

  • web.config 位于站点根目录中,路径为 Home\404.html
  • web.config 位于站点根目录\Home,路径为404.html

https://stackoverflow.com/questions/32138200/

相关文章:

c# - 使用 Prism 库将 View 注入(inject) TabControl

c# - 使用 UpdateAsync 方法 ASP.NET Entity Framework

docker - 学习 docker 的先决条件

batch-file - 批处理文件中的时间戳未正确更新

r - 如何在 R 中以固定网格模式绘制 "matrix"

shopify - Liquid 中的逗号分隔列表

c# - 将浮点指针作为 IntPtr 传递(pinvoke)

git - 在 git 中恢复大多数前 n 个提交

selenium - 如何 'click' 单选按钮 -> 需要 xPath

python - Django 休息框架 : How serialize list of list?