【问题标题】:Web.config - Custom error pages not workingWeb.config - 自定义错误页面不起作用
【发布时间】:2015-05-26 20:01:59
【问题描述】:

我已经尝试了以下方法(也尝试了注释掉的未注释),但只得到一个错误:

您要查找的资源已被删除,有它的名字 已更改,或暂时不可用。

在已发布网站项目的 web.config 中:

  <system.webServer>
    <httpErrors errorMode="Custom"  existingResponse="Replace">
      <remove statusCode="404"/>
      <!--<error statusCode="404" responseMode="File" path="\Error\404.htm"/>-->
      <error statusCode="404" responseMode="ExecuteURL" path="http://example.com/Error/404.htm"/>
    </httpErrors>
  </system.webServer>

我尝试将浏览器中的 url 从 .../default.aspx(这很好)更改为 .../abc.aspx

这是重定向到错误页面的正确方法,还是这里有一些错误?

编辑

我发现如果我尝试http://example.com/nonExistingPage - 它 重定向到错误页面。但不是来自http://example.com/Folder/nonExistingPage

编辑 2

通过指定example.com 之后的路径部分解决了问题。但是 - 该网站已发布到 example.com/subfolder 并且当有人导航到 example.com/nonExistingFolder 时 - 不会显示自定义错误页面。

【问题讨论】:

  • ref 编辑 2:如果网站发布到 example.com/subfolder,则不会对尝试访问 example.com/nonExistingFolder 的人产生任何影响。 web.config 只会从网站的根目录向前应用(即example.com/subfolder/nonExistingFolder
  • @kspearrin 实际上,我有一个 Web 应用程序发布到域的根目录,其中的工作 web.config 指定了 404 页面。但在这里失败了。

标签: asp.net .net iis


【解决方案1】:

web.config 试试这个(包括 500 错误支持):

<configuration>
    ...
    <system.web>
        ...
        <customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error/500.htm">
            <error statusCode="404" redirect="~/Error/404.htm" />
            <error statusCode="500" redirect="~/Error/500.htm" />
        </customErrors>
        ...
    </system.web>
    ...
    <system.webServer>
        ...
        <httpErrors errorMode="Custom">
            <remove statusCode="404" />
            <error statusCode="404" path="/Error/404.htm" responseMode="ExecuteURL" prefixLanguageFilePath="" />
            <remove statusCode="500" />
            <error statusCode="500" path="/Error/500.htm" responseMode="ExecuteURL" prefixLanguageFilePath="" />
        </httpErrors>
        ...
     </system.webServer>
     ...
</configuration>

我还建议使用.aspx 页面而不是.htm,以便确保在响应标头中设置正确的状态代码。

<%@ Page Language="C#" %>

<% Response.StatusCode = 404; %>

<!DOCTYPE html>
<html>
<head runat="server">
    <title>404 Not Found</title>
</head>
<body>
    404 Error
</body>
</html>

【讨论】:

  • 相对相对的路径是解决方案。我之前尝试过相对路径,但需要的是路径 after example.com.
  • 这似乎是大部分答案,但我已经更新了问题 - 导航到项目“根”上方不存在的页面时仍然存在问题。
  • 不幸的是,这个解决方案实际上提交了一个可怕的 200 响应。
  • @jenson-button-event 即使Response.StatusCode = 404 ?
  • @jenson-button-event,如果您在 IIS 日志中看到 200 而不是 404,请在 responseMode 中尝试 Redirect
猜你喜欢
  • 1970-01-01
  • 2013-03-06
  • 2012-07-24
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
相关资源
最近更新 更多