IIS 7.0 404 自定义错误页面和 web.config

IIS 7.0 404 自定义错误页面和 web.config

我在使用自定义 404 错误页面时遇到了麻烦。

我有一个运行 .NET 项目的域,它有自己的错误处理功能。我有一个为该域运行的 web.config,其中包含:

<customErrors mode="RemoteOnly">
    <error statusCode="500" redirect="/Error"/>
    <error statusCode="404" redirect="/404"/>
</customErrors>

在该域的子目录中,我通过routes.IgnoreRoute("Assets/{*pathInfo}");在 .NET 项目中执行来忽略那里的所有路由,并且我想在该子目录中以及 Assets 的任何子目录中放置自定义 404 错误页面。子目录包含静态内容,如图像、css、js 等。

因此,在 IIS 的错误页面部分,我将重定向到绝对 URL。

该目录的 web.config 如下所示:

<system.webServer>
    <httpErrors>
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="http://mydomain.com/404" responseMode="Redirect" />
    </httpErrors>
</system.webServer>

但是我导航到该目录下的未知 URL,但仍然看到默认的 IIS 404 页面。

我还在 IIS 中看到一条警报,内容为:

您已配置要返回的本地和远程请求的详细错误消息。选择此选项后,将不使用自定义错误配置。

customErrors mode="RemoteOnly"这与站点中的 web.config有什么关系吗?

我试图覆盖customErrors子目录 web.config 中的内容,但没有任何变化。

任何帮助,将不胜感激。

谢谢。

答案1

您可以尝试添加以下内容:

<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/index.php" responseMode="ExecuteURL" />
</httpErrors>

在您的“web.config”文件中。

答案2

这可能有点晚了,但是您可以将以下内容放在system.webserverweb.config 的一部分中

<system.webServer>
  <httpErrors existingResponse="PassThrough" />
</system.webServer>

感谢 Stack Overflow 上的这篇文章:https://stackoverflow.com/questions/434272/iis7-overrides-customerrors-when-setting-response-statuscode

相关内容