gpt4 book ai didi

c# - 使用母版页的 Web 应用程序的 ASP.NET 自定义错误页

转载 作者:可可西里 更新时间:2023-11-01 08:47:52 26 4
gpt4 key购买 nike

引用 KB306355: How to create custom error reporting pages in ASP.NET by using Visual C# .NET

我了解如何创建自定义错误页面。有很多如何操作的示例,如上面的链接所示。

我找到的所有示例都没有说明如何做我想做的事情。

我有一个使用母版页的 Web 应用程序。

在我的母版页中,我有一个标签控件用于显示所有页面都会看到的错误:

<h4 id="bannerError"><asp:Label ID="lblError" runat="server" /></h4>

在母版页后面的代码中,我有这个:

public void Page_Error(object sender, EventArgs e) {
var err = Server.GetLastError().GetBaseException();
ErrorMessage = String.Format("URL {0}: {1} Error: {2}", Request.Url, err.GetType(), err.Message);
Server.ClearError();
}

public string ErrorMessage {
get { return lblError.Text; }
set {
LogError(value);
lblError.Text = value;
}
}

ErrorMessage 是一个属性。我的其他页面可以轻松访问它,而且我可以轻松地编辑掉关于将错误写入我们服务器数据库的部分。

Web.config 页面配置(片段):

<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<customErrors defaultRedirect="Default.aspx" mode="On">
<error statusCode="403" redirect="Default.aspx" />
<error statusCode="404" redirect="Default.aspx" />
</customErrors>
</system.web>
</configuration>

我应该如何编辑我的文件,以便在我的应用程序中的任何页面(源自母版页)上发生的任何错误仅通过母版页显示此基本信息,而不是将页面重定向到另一个 URL?

最佳答案

我知道问题是关于如何让 MasterPage 解决方案工作,但我认为使用应用程序级别的 Error 事件是最好的捕捉方式- 转发到错误页面的所有错误处理程序。

您基本上需要处理 Global.asax 文件中的 Application_Error。在这里,您不仅可以处理所有页面级错误,还可以处理应用程序级错误和某些类型的 HTTP 错误(如果它们可以到达您的应用程序管道)。

我认为这是一种更好、更集中的方法。添加 MasterPage 级别或 BasePage 级别的错误事件处理程序也是可能的,但作为第二层。

here一个很好的例子。

关于c# - 使用母版页的 Web 应用程序的 ASP.NET 自定义错误页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21887150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com