【问题标题】:ASP.Net - Cant Get My Custom Error Page WorkingASP.Net - 无法让我的自定义错误页面正常工作
【发布时间】:2015-08-07 07:46:47
【问题描述】:

我有一个asp.net 网站,我正在尝试配置一个 404 页面,但我似乎无法正常工作。

我的 web.config 中的代码是

<system.web>
  <customErrors mode="On" defaultRedirect="ResponseRewrite">
    <error statusCode="404" redirect="~/Page_Not_Found.aspx" />
  </customErrors>
</system.web>
<system.webServer>
     <httpErrors errorMode="Custom">
          <remove statusCode="404"/>
          <error statusCode="404" path="~/Page_Not_Found.aspx" responseMode="Redirect"/>
     </httpErrors>
</system.webServer>

错误页面 HTML

<%@ Page Title="- Page not found" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Page_Not_Found.aspx.cs" Inherits="WebApplication1.Page_Not_Found" %>

<asp:Content ID="404BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <div class="col-xs-12 col-sm-9">
        <h1>Page not found</h1>
        <p>Use this area to provide additional information.</p>
        <p>Use this area to provide additional information.</p>
        <p>Use this area to provide additional information.</p>
        <p>Use this area to provide additional information.</p>
        <p>Use this area to provide additional information.</p>
        <p>Use this area to provide additional information.</p>
    </div>
</asp:Content>

当我输入无效的 URL 时,我收到以下服务器错误

“/”应用程序中的服务器错误。运行时错误描述:一个 处理您的请求时发生异常。此外, 执行自定义错误页面时发生另一个异常 第一个例外。请求已终止。

我做错了什么?

我在这里和网络上查看了其他解决方案,但所有修复似乎都对我没有帮助。

【问题讨论】:

  • 我猜有一些服务器错误。禁用自定义错误并检查实际的异常消息。
  • @RahulSingh 服务器错误中没有信息,因为我已经发布了我在初始帖子中得到的信息。正如我所看到的,我的项目中没有任何其他自定义错误

标签: c# asp.net


【解决方案1】:

可能是您的应用程序中未捕获的异常抛出(内部服务器错误)

尝试添加这个:

<error statusCode="500" redirect="https://www.google.fr/"/>

并检查它是否在 Google 上重定向您。 如果是这样,这是与应用程序代码相关的问题,而不是因为 IIS。

defaultRedirect="ResponseRewrite" 对我来说似乎也不正确。 它不应该在redirectMode="ResponseRewrite" 属性中吗?

如果错误不属于详细的自定义错误(在您的情况下为 404),则默认重定向是 IIS 正在重定向的页面。

如果您的应用程序抛出 500 错误代码,您将在 ResponseRewrite 上被重定向,而 IIS 可能找不到它

【讨论】:

  • 我已经尝试了你的代码,但仍然遇到同样的问题,我也没有重定向到谷歌
  • 你能告诉你你的 IIS 版本是什么吗?
【解决方案2】:

我怀疑您要显示为 404 页面的页面会产生异常。这并不一定意味着异常发生在页面本身,它也可能来自页面使用的母版页。

您可以尝试在全局 asax 中设置断点:

protected void Application_Error()
{
    var error = Server.GetLastError();
    Logger.Log(error); //This is my own Logging library, so implement something yourself, but you get the idea.
}

当此代码触发时,您可以检查内部异常详细信息并查看发生了什么。

【讨论】:

    【解决方案3】:

    您需要做两件事。

    1) 关闭自定义错误以查明问题的真正原因。

    2) 似乎在 IIS8 中在自定义错误页面的路径中使用 '~' tilda 存在问题,请尝试以下操作:

    <system.web>
      <customErrors mode="On" defaultRedirect="ResponseRewrite">
        <error statusCode="404" redirect="/Page_Not_Found.aspx" />
      </customErrors>
    </system.web>
    
    <system.webServer>
      <httpErrors errorMode="Custom">
        <remove statusCode="404"/>
        <error statusCode="404" path="/Page_Not_Found.aspx" responseMode="Redirect"/>
     </httpErrors>
    </system.webServer>
    

    http://forums.asp.net/t/1938152.aspx?Tilde+character+not+recognized+in+IIS8+for+custom+error+pages+in+web+config

    另外值得一提的是,如果您是 IIS7+,请不要同时使用这两个配置条目,然后确保您使用 httpErrors 而不是 customErrors。

    参考资料:

    Asp.Net Forums - Tilda Not Recognised

    Stackoverflow - Difference between httpErrors and customErrors

    【讨论】:

    • 如果我关闭自定义消息,我得到的服务器错误是 >“/”应用程序中的服务器错误。 > 找不到资源。 > 说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。 > 请求的 URL:/Default1
    • 该页面是否真的丢失或不可用?
    • 该页面确实存在,就像我输入可以访问的 URL 一样
    • @murday1983 如果它存在,你不应该得到 404 那么正确吗?可能值得检查您的 IIS 配置并确保您的应用程序设置正确。
    【解决方案4】:

    终于找到了我的问题所在。这是我在asp:Content 中使用ID 时遇到的问题,我在其中添加了 404(显示在我的初始帖子中),如果我将其删除或将其更改为字母字符,它就可以工作

    曾经

    <asp:Content ID="404BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    

    修复 - 已移除

    <asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    

    修复 - 字母字符

    <asp:Content ID="FourOFourBodyContent" ContentPlaceHolderID="MainContent" runat="server">
    

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 2015-05-26
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多