C# 如何为所有其他运行时错误添加通用错误页?
我正试着调整一下C# 如何为所有其他运行时错误添加通用错误页?,c#,asp.net,C#,Asp.net,我正试着调整一下 <customErrors mode="On" defaultRedirect ="~/System/err.aspx"> </customErrors> 在web.config文件中 因此,无论何时任何页面中出现运行时错误或任何类型错误,都不应在该页面上显示错误消息,而应将其重定向到err.aspx页面 有没有这样的配置 网站上有很多链接可以帮助你摆脱这个困境,因此如果你没有得到,请参阅下面的代码。您需要添加如下所示的代码 配置部分。此外,还
<customErrors mode="On" defaultRedirect ="~/System/err.aspx">
</customErrors>
在web.config文件中
因此,无论何时任何页面中出现运行时错误或任何类型错误,都不应在该页面上显示错误消息,而应将其重定向到err.aspx页面
有没有这样的配置
网站上有很多链接可以帮助你摆脱这个困境,因此如果你没有得到,请参阅下面的代码。您需要添加如下所示的代码
配置
部分。此外,还应该有一个名为err
的页面,其中包含cleary所说的错误页面的所有信息
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="err.aspx">
<error statusCode="404" redirect="404.aspx" />
<error statusCode="500" redirect="500.aspx" />
</customErrors>
</system.web>
也要看一看,以便清楚地理解
希望这有帮助我们更喜欢在Global.asax中捕获这些信息,以便在重定向到错误页面之前,我们可以执行一些自定义执行处理,例如写入事件日志、保存到数据库和电子邮件支持人员
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="err.aspx">
<error statusCode="404" redirect="404.aspx" />
<error statusCode="500" redirect="500.aspx" />
</customErrors>
</system.web>
在Global.asax.cs中
void Application_Error(object sender, EventArgs e)
{
// Get the exception
Exception exc = Server.GetLastError();
// Do something with the exception, write it to the event log, save it to the db, email someone who cares etc
// Clear the error
Server.ClearError();
// Redirect to a generic error page
Response.Redirect("~/System/err.aspx");
}
下面是更多的用法示例:
(1)你所遵循的方法是正确的。您需要为不同类型的错误指定不同的错误页(如果您希望以不同的方式处理不同的错误类型),如nadeem所述
(2)第二种方法最好是在Global.asax中使用应用程序错误,如下所示:
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
// Get the exception object.
Exception exc = Server.GetLastError();
// For other kinds of errors give the user some information
// but stay on the default page
Response.Write("<h2>Global Page Error</h2>\n");
Response.Write(
"<p>" + exc.Message + "</p>\n");
Response.Write("Return to the <a href='Default.aspx'>" +
"Default Page</a>\n");
// Clear the error from the server
Server.ClearError();
}
在错误页面中:
protected void Page_Load(object sender, EventArgs e)
{
Exception err = Session["LastError"] as Exception;
//Exception err = Server.GetLastError();
if (err != null)
{
err = err.GetBaseException();
lblErrorMsg.Text = err.Message;
lblSource.Text = err.Source;
lblInnerEx.Text = (err.InnerException != null) ? err.InnerException.ToString() : "";
lblStackTrace.Text = err.StackTrace;
Session["LastError"] = null;
}
}
这个问题可能会给你一些答案:你能不能给我今晚的密码。不过,我确实提供了一个链接,可以帮助您自己找到答案。