通过避免下列10个常见aspnet缺陷使网站平稳运

通过避免下列10个常见aspnet缺陷使网站平稳运

ID:30451649

大小:97.07 KB

页数:16页

时间:2018-12-30

通过避免下列10个常见aspnet缺陷使网站平稳运_第1页
通过避免下列10个常见aspnet缺陷使网站平稳运_第2页
通过避免下列10个常见aspnet缺陷使网站平稳运_第3页
通过避免下列10个常见aspnet缺陷使网站平稳运_第4页
通过避免下列10个常见aspnet缺陷使网站平稳运_第5页
资源描述:

《通过避免下列10个常见aspnet缺陷使网站平稳运》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、通过避免下列10个常见ASPNET缺陷使网站平稳运通过避免下列10个常见ASP.NET缺陷使网站平稳运行【转】2010年05月12日星期三13:52ASP.NET成功的其中一个原因在于它降低了Web开发人员的门槛。即便您不是计算机科学博士也可以编写ASP.NET代码。我在工作中遇到的许多ASP.NET开发人员都是自学成材的,他们在编写C#或VisualBasic之前都在编写MicrosoftExcel电子表格。现在,他们在编写Web应用程序,总的来说,他们所做的工作值得表扬。但是与能力随之而来的还有责任,即使是经验丰富的ASP.NET

2、开发人员也难免会出错。在多年的ASP.NET项目咨询工作中,我发现某些错误特别容易导致缺陷不断发生。其中某些错误会影响性能。其他错误会抑制可伸缩性。有些错误还会使开发团队耗费宝贵的时间来跟踪错误和意外的行为。下面是会导致ASP.NET生产应用程序的发布过程中出现问题的10个缺陷以及可避免它们的方法。所有示例均来自我对真实的公司构建真实的Web应用程序的亲身体验,在某些情况下,我会通过介绍ASP.NET开发团队在开发过程中遇到的一些问题来提供相关的背景。LoadControl和输出缓存极少有不使用用户控件的ASP.NET应用程序。在出现

3、母版页之前,开发人员使用用户控件来提取公用内容,如页眉和页脚。即使在ASP.NET2.0中,用户控件也提供了有效的方法来封装内容和行为以及将页面分为多个区域,这些区域的缓存能力可以独立于作为整体的页面进行控制(一种称为段缓存的特殊输出缓存形式)。用户控件可以采用声明的方式加载,也可以强制加载。强制加载依赖于Page.LoadControl,它实例化用户控件并返回控件引用。如果用户控件包含自定义类型的成员(例如,公共属性),则您可以转换该引用并从您的代码访问自定义成员。图1中的用户控件实现名为BackColor的属性。以下代码加载用户控

4、件并向BackColor分配一个值:protectedvoidPage_Load(objectsender,EventArgse){//加载用户控件并将其添加到页面中Controlcontrol=LoadControl("~/MyUserControl.ascx");PlaceHolder1.Controls.Add(control);//设置其背景色((MyUserControl)control).BackColor=Color.Yellow;}以上代码实际上很简单,但却是一个等待粗心的开发人员掉进去的陷阱。您能找出其中的破绽吗?如

5、果您猜到该问题与输出缓存有关,那么您是正确的。正如您所看到的一样,上述代码示例编译和运行都正常,但是如果尝试将以下语句(完全合法)添加到MyUserControl.ascx中:%@OutputCacheDuration="5"VaryByParam="None"%则当您下一次运行该页面时,您将看到InvalidCastException(ohjoy!)和以下错误消息:"无法将类型为'System.Web.UI.PartialCachingControl'的对象转换为类型'MyUserControl'。"因此,此代码在没有OutputC

6、ache指令时运行正常,但如果添加了OutputCache指令就会出错。ASP.NET不应该以这种方式运行。页面(和控件)对于输出缓存应该是不可知的。那么,这代表什么意思?问题在于为用户控件启用输出缓存时,LoadControl不再返回对控件实例的引用;相反,它返回对PartialCachingControl实例的引用,而PartialCachingControl可能会也可能不会包装控件实例,具体取决于控件的输出是否被缓存。因此,如果开发人员调用LoadControl以动态加载用户控件并且为了访问控件特定的方法和属性而转换控件引用,他

7、们必须注意进行该操作的方式,以便不管是否具有OutputCache指令,代码都可以运行。图2说明动态加载用户控件以及转换返回的控件引用的正确方法。以下是其工作原理概要:如果ASCX文件缺少OutputCache指令,则LoadControl返回一个MyUserControl引用。Page_Load将该引用转换为MyUserControl并设置控件的BackColor属性。如果ASCX文件包括一个OutputCache指令并且控件的输出没有被缓存,则LoadControl返回一个对PartialCachingControl的引用,此Pa

8、rtialCachingControl的CachedControl属性包含对基础MyUserControl的引用。Page_Load将PartialCachingControl.CachedControl转换为MyUse

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。