62,046
社区成员
发帖
与我相关
我的任务
分享
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<!--
通过 <authentication> 节,可配置
ASP.NET 用于识别进入用户的
安全身份验证模式。
-->
<authentication mode="Windows" />
<!--
通过 <customErrors> 节,可以配置
在执行请求的过程中出现未处理的错误时要执行
的操作。具体而言,
开发人员通过该节可配置要显示的 html 错误页,
以代替错误堆栈跟踪。
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
<customErrors mode="Off"/>
</system.web>
public class BasePage:Page
我一般习惯于override2个方法..一个是OnInit用来判断用户是否登陆
protected override void OnInit(EventArgs e)
{
if (Session["user"]==null)
{
Response.Redirect("~/Login.aspx");
}
base.OnInit(e);
}
一个OnError全局捕获程序(当然page得继承否则不能实现)
protected override void OnError(EventArgs e)
{
string errorMsg = String.Empty;
Exception currentError = Server.GetLastError();
errorMsg += "来自页面的异常处理<br />";
errorMsg += "系统发生错误:<br />";
errorMsg += "错误地址:" + Request.Url + "<br />";
errorMsg += "错误信息:" + currentError.Message + "<br />";
Session["error"] = errorMsg;
Server.ClearError();
Response.Redirect("~/resources/500.aspx");
base.OnError(e);
}
当然了你看到我的代码一想就知道 如果有错误了 会调转到resources/500.aspx这个页面上
那么在500.aspx上写很少的代码 就可以把错误显示错来了.
er.Text = Session["error"]==null?"未知错误":Session["error"].ToString();
Session["error"] = null;
private void Pagr_Load(object sender, EventArgs e)
{
throw new NotImplementedException();
}
这时候,你再看是否在页面上显示调试跟踪信息。
网站如果有很严重的bug,是会捕获不了异常的。并不是说有的信息都会显示在页面上。