ResponseMode =“文件”不起作用

dem*_*emo 0 asp.net iis asp.net-mvc http-error custom-error-pages

我想将简单的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>
Run Code Online (Sandbox Code Playgroud)

HTML页面位于Views/Shared文件夹中。但是每次我走到一条不存在的道路时,我都会/foo/bar收到The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.不是我的错误消息。

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

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Home/404">
    <error statusCode="404" redirect="~/Home/404" />
    <error statusCode="500" redirect="~/Home/500" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)

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

我发现html页面正确路径或更改/为的可能问题,\但没有人发现对我有用的解决方案。


我使用IIS7 +

tib*_*ibx 5

该设置的文档很笨拙。


如果responseModehttpErrors 错误元素设置为文件路径被认为是文件路径(使用\分隔目录)。


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

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

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