ASP.不能得到我的自定义错误页工作

本文关键字:错误 工作 自定义 我的 不能 ASP | 更新日期: 2023-09-27 18:06:44

我有一个asp.net网站,我正试图配置一个404页面,但我似乎不能让它工作。

代码我有在我的网页。配置是

<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时,我得到以下服务器错误

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

我做错了什么?

我在这里看过其他的解决方案,也在网上,但所有的修复似乎没有帮助我。

ASP.不能得到我的自定义错误页工作

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

试着添加这个:

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

检查它是否在谷歌上重定向你。如果是这样,这是与应用程序代码相关的问题,而不是IIS的问题。

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

默认重定向是IIS重定向的页面,如果错误不是详细的自定义错误的一部分(在您的情况下是404)。

如果你的应用抛出一个500的错误代码,你会被重定向到ResponseRewrite, IIS可能找不到

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

你可以尝试在全局变量中设置一个断点:

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.
}

当这段代码触发时,您可以检查内部异常细节,看看发生了什么。

您需要做两件事。

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 +字符+不+认可+ + IIS8 + +自定义错误页+在+网络+配置

另外值得一提的是,如果你是IIS7+,不要使用两个配置项,然后确保你使用httpErrors而不是customErrors。

引用:

Asp。网络论坛- Tilda无法识别

Stackoverflow - httpererrors和customErrors的区别

终于发现我的问题是什么了。这是我在asp:Content中遇到的ID问题,我已经添加了404(显示在我的初始帖子中),如果我删除它或将其更改为字母字符,它就会起作用

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

修复-移除

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

修复- Alpha字符

<asp:Content ID="FourOFourBodyContent" ContentPlaceHolderID="MainContent" runat="server">
相关文章: