ASP.NET MVC 自定义错误页面陷入重定向循环

标签 asp.net asp.net-mvc redirect iis custom-error-pages

我正在尝试在 ASP.NET MVC 应用程序中显示自定义错误页面。 据我了解,某些错误由 ASP.NET 处理,其他错误由 IIS 处理。

ASP.NET 已处理且工作正常

<customErrors mode="On" defaultRedirect="~/Error/Index"/>

当我请求一个不存在的 URL 并引用 .html 等静态页面时,我希望 IIS 能够处理它。

<httpErrors errorMode="Custom">
      <remove statusCode="404"/>
      <error statusCode="404" path="http://localhost/MySite/404.html" responseMode="Redirect"/>
</httpErrors>

这有效。但是我不想在那里硬编码 http://localhost 而是将其设置为相对路径。

所以我尝试了

<httpErrors errorMode="Custom">
    <remove statusCode="404"/>
    <error statusCode="404" path="~/404.html" responseMode="Redirect"/>
</httpErrors>

但是,随着 URL 最终成为 http://localhost/MySite/~/~/~/~/~/~/~/~/~/~/~ ,它会不断重定向我(看起来)/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/404.html

如果我这样做也有效

<httpErrors errorMode="Custom">
    <remove statusCode="404"/>
    <error statusCode="404" path="404.html" responseMode="Redirect"/>
</httpErrors>

但当然只有当错误位于 http://localhost/MySite/doesnotexist.html 根目录中,而不是位于 http://localhost/MySite/somedir 之类的任何其他目录中时/doesnotexist.html

如果我将 responseMode 更改为任何其他选项,它根本不起作用,会显示默认的 IIS 404 页面。

我很困惑,是什么导致了重定向循环?

最佳答案

我已经能够复制您所描述的行为。当我将responseMode更改为文件时,我的问题被修复了。 IE。像这样

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

但也许问题是因为您已将 404.html 放在 mysite 文件夹中。假设它必须留在那里,我认为如果你这样做它应该可以工作

<httpErrors errorMode="Custom">
  <remove statusCode="404" />
  <error statusCode="404" path="/mysite/404.html" responseMode="Redirect" />
</httpErrors>   

关于ASP.NET MVC 自定义错误页面陷入重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63734451/

相关文章:

javascript - asp.net 中的 ValidationExpression 验证数字和字符(/和 -)

javascript - 备注字段(客户端和服务器端)的正则表达式验证很少有特殊标签

c# - 在asp.net c# 中禁用RequiredFieldValidator

c# - 在没有外键 Entity Framework 的情况下设置一对多

asp.net-mvc - 为什么部分 View 在 MVC 5 Visual Studio 13 中显示为整页?

regex - 将旧域重定向到新域的主页

c# - 如何使用带有 ASP.Net/C# 的 MySQL ODBC 将自动增量 ID 插入 MySQL 表中?

asp.net-mvc - ASP.NET MVC 中的模拟

javascript - 是否可以根据时间进行重定向?

tomcat - HAProxy - URL 重定向和重写