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处理请求时发生异常。此外,的自定义错误页执行时发生了另一个异常第一个例外。请求已被终止。
我做错了什么?
我在这里看过其他的解决方案,也在网上,但所有的修复似乎没有帮助我。
可能是在应用程序中未捕获的抛出异常(内部服务器错误)
试着添加这个:
<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">