All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
asp.net2.0网站基础之服务器安装IIS
该学Java或.NET?_[Asp.Net教程]
dotnet下生成简单sql语句_[Asp.Net教程]
C#网络应用编程基础练习题与答案(八)_[Asp.Net教程]
谈PHP生成静态页面_[PHP教程]
SQL注入漏洞全接触(高级篇,)_[SQL,Server教程]
关于MSSQL数据库日志满的快速解决办法_[SQL,Server教程]
XMLHTTP获取web访问头信息和网页代码_[XML教程]
ASP.NET国际化(多语言)支持组件[提供下载]_[Asp.Net教程]
.NET3.5和VS2008中的ASP.NET,AJAX_.net资料_编程技术
Reading number is top 10 pictures
The dog buy the ham oneself
胸部遭到偷窥的女人们
Sora aoi possession photo2
猫眯也疯狂
美丽的风景--让你目瞪口呆
美女和狗狗2
这两天,中国人民到处都可以“看海”了
Valentine's day comes, send some cartoon
每天进步一点点
西游四格漫画(四)
Download software ranking
1400篇各类破解文章
徐若瑄成名作“魔鬼天使”
Ashlynn Video1
WebService在.NET中的实战应用教学视频 → 第4集
I for your crazy
Eclipse-CALMSANNY (second edition)
Wild things 2
Popkart Cracked versions Mobile phone games
ASP.NET.2.0.XML.高级编程(第3版)
Boxer's Top ten classic battle6
delv published in(发表于) 2014/1/27 6:48:19 Edit(编辑)
ASP.NET中的异常处理_[Asp.Net教程]

ASP.NET中的异常处理_[Asp.Net教程]

ASP.NET中的异常处理_[Asp.Net教程]

ASP.NET中的异常处理:
当一个异常在调用堆栈中没有被处理,也没有被框架代码处理时,我们说这个异常未处理,它将被ASP.NET捕获,ASP.NET对此未处理错误的处理方法是显示一个页面,列出该未处理异常的详细情况。
有两个在异常未处理时将被ASP.NET调用的事件:
Page_Error event,它提供捕获在Page级别发生错误的方法。
Application_Error event,它提供捕获在代码中的任何地方发生错误的方法。该事件的范围是整个应用程序,这使它成为添加日志代码的一个理想地方。
这两个事件的执行顺序是——先执行Page_Error,后执行Application_Error。如果希望在Page_Error中处理过的错误就不要再在Application_Error中处理,我们可以在Page_Error中处理错误之后,使用Server.ClearError方法清除最后一个错误,避免再调用Application_Error。

ASP.NET AJAX UpdatePanel的异常处理:
您可以使用Reflector反编译UpdatePanel控件可以查看其实现代码发现,放在UpdatePanel控件上的异常已经在RequestManager类的OnPageError中已经处理掉了,所以您在Application_Error无法捕获UpdatePanel中的错误做进一步的处理,详细的解释如下:
UpdatePanel控件的RenderChildren(HtmlTextWriter):Void方法
protected override void RenderChildren(HtmlTextWriter writer)
{
if (this._asyncPostBackMode)
{
if (this._rendered)
{
return;
}
HtmlTextWriter writer2 = new HtmlTextWriter(new StringWriter(CultureInfo.CurrentCulture));
base.RenderChildren(writer2);
PageRequestManager.EncodeString(writer, "updatePanel", this.ClientID, writer2.InnerWriter.ToString());
}
else
{
writer.AddAttribute(HtmlTextWriterAttribute.Id, this.ClientID);
if (this.RenderMode == UpdatePanelRenderMode.Block)
{
writer.RenderBeginTag(HtmlTextWriterTag.Div);
}
else
{
writer.RenderBeginTag(HtmlTextWriterTag.Span);
}
base.RenderChildren(writer);
writer.RenderEndTag();
}
this._rendered = true;
}
从这个方法中您可以看到在AJAX异步处理中调用了PageRequestManager.EncodeString(writer, "updatePanel", this.ClientID, writer2.InnerWriter.ToString());方法,接着查找PageRequestManager类,您可以发现该类中有OnPageError(object sender,EventArgs e)事件处理器,并且在PageRequestManager类的OnInit初始化事件处理器中登记了OnPageError的事件处理器,从这里可以看出当UpdatePanel上的控件发生异常时,UpdatePanel本身将会把它处理掉,您在Application_Error也就无法捕获到了。
PageRequestManager类的OnInit方法:
internal void OnInit()
{
if (this._owner.EnablePartialRendering && !this._owner._supportsPartialRenderingSetByUser)
{
IHttpBrowserCapabilities browser = this._owner.IPage.Request.Browser;
bool flag = ((browser.W3CDomVersion >= MinimumW3CDomVersion) && (browser.EcmaScriptVersion >= MinimumEcmaScriptVersion)) && browser.SupportsCallback;
if (flag)
{
flag = !this.EnableLegacyRendering;
}
this._owner.SupportsPartialRendering = flag;
}
if (this._owner.IsInAsyncPostBack)
{
this._owner.IPage.Error += new EventHandler(this.OnPageError);
}
}
PageRequestManager类的OnPageError方法:
private void OnPageError(object sender, EventArgs e)
{
Exception lastError = this._owner.IPage.Server.GetLastError();
this._owner.OnAsyncPostBackError(new AsyncPostBackErrorEventArgs(lastError));
string asyncPostBackErrorMessage = this._owner.AsyncPostBackErrorMessage;
if (string.IsNullOrEmpty(asyncPostBackErrorMessage) && !this._owner.Control.Context.IsCustomErrorEnabled)
{
asyncPostBackErrorMessage = lastError.Message;
}
int httpCode = GetHttpCodeForException(lastError);
bool flag = false;
if (this._owner.AllowCustomErrorsRedirect && this._owner.Control.Context.IsCustomErrorEnabled)
{
if (!this.CustomErrorsSectionHasRedirect(httpCode))
{
flag = true;
}
}
else
{
flag = true;
}
if (flag)
{
this._owner.IPage.Response.Clear();
EncodeString(this._owner.IPage.Response.Output, "error", httpCode.ToString(CultureInfo.InvariantCulture), asyncPostBackErrorMessage);
this._owner.IPage.Response.End();
}
}

希望上述解释能够给您一些帮助。






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.