WSS中,微软提供了一整套完成的接口,使开发者可以通过这些接口对WSS中数据进行读写,那么,在编写代码过程中需要注意哪些问题呢?如何解决这些问题?
WSS对象模型包含对象都实现了IDisposable接口,所以必须注意尽量避免在内存中保留没用的对象。实际上,如果没有及时清除内存中没用的对象,可以能出现一些问题。
比如,WSS应用程序池经常性回收,应用程序出现堆栈错误,系统性能下降等等。那么如何防止这些问题发生,我们需要在代码中注意一些事项:
1. 使用Dispose方法来清除没用的对象
在WSS对象模型中,主要影响性能的类有SPSite类和SPWeb类,建议在使用完这些类后使用Dispose方法清空对象。这些内存中的对象在长时间没有使用的情况下,.net垃圾回收机制进行清理,但是,千万不要太过相信垃圾回收机制,可能在它回收这些对象之前,你的机器已经崩溃。
2. 使用using语句
通过using语句,可以在对象不在使用范围内自动清空,这样防止忘记调用dispose方法。如:
using(SPSite oSPsite = new SPSite("http://server"))
{
using(SPWeb oSPWeb = oSPSite.OpenWeb())
{
str = oSPWeb.Title;
str = oSPWeb.Url;
}
}
3. 利用try,catch和finally代码块防止程序出错后对象遗留在内存中。
String str;
SPSite oSPSite = null;
SPWeb oSPWeb = null;
try
{
oSPSite = new SPSite("http://server");
oSPWeb = oSPSite.OpenWeb(..);
str = oSPWeb.Title;
}
catch(Exception e)
{
}
finally
{
//当程序出错后,会调用这里的代码清除对象
if (oSPWeb != null)
oSPWeb.Dispose();
if (oSPSite != null)
oSPSite.Dispose();
}
注意,在使用重定向后,将不会调用finally中的代码,所以,如果要使用重定向,你应该使用如下代码:
String str;
SPSite oSPSite = null;
SPWeb oSPWeb = null;
try
{
oSPSite = new SPSite("http://server");
oSPWeb = oSPSite.OpenWeb(..);
str = oSPWeb.Title;
if(bDoRedirection)
{
//在重定向之前,清空相关对象
if (oSPWeb != null)
oSPWeb.Dispose();
if (oSPSite != null)
oSPSite.Dispose();
Response.Redirect("newpage.aspx");
}
}
catch(Exception e)
{
}
finally
{
if (oSPWeb != null)
oSPWeb.Dispose();
if (oSPSite != null)
oSPSite.Dispose();
}
4. 除了SPSite和SPWeb两个对象类以外,要注意的是,当你访问SPSite.RootWeb和SPWeb.ParentWeb 这两个属性后,你需要清除RootWeb产生的对象。例如:
String str;
SPSite oSPSite = new SPSite("http://server");
str = oSPSite.RootWeb.Title;
str = oSPSite.RootWeb.Url;
... additional processing on RootWeb ...
oSPSite.RootWeb.Dispose(); //注意要删除RootWeb产生的对象
oSPSite.Dispose();
原文链接:
http://www.cnblogs.com/levinlee/archive/2008/07/31/1257654.html
分享到:
相关推荐
文档详细介绍SharePoint里的各个对象模型,不管你是初学者还是大鸟,都有很好帮助。
sharepoint 对象模型,适合初学者了解掌握SharePoint基本开发。
课程以SharePoint 2016为基础,介绍各种对象模型的功能和使用,通过例子介绍如何使用vs开发SharePoint项目,包括web部件、事件触发器、计时器任务、应用程序页的常用模板,和开发过程中常见的问题等。 1.对象模型...
部署SharePoint Portal Server 2003 服务器要求 客户端要求 部署规划 Web Parts的开发 SharePoint 对象模型 使用VS.NET创建Web Parts
本书第1章为基础知识,讲述sharepoint的基本概念,基本的对象模型,代码编写注意事项,并讲解了一个集开发和部署打包为一体的项目结构的创建;第2章为web部件开发,介绍了web部件的开发部署及其皮肤机制的实现;第...
[基础]基于SharePoint的Web应用开发模型.pdf
几份sharepoint2010的开发教程,其中有几个是英文版的。 分别是:1、[SharePoint.2010.Workflows.实战].(SharePoint.2010.Workflows.in.Action).Phil.Wicklund.文字版.pdf 2、[SharePoint2010.Web开发参考大全]....
最全的sharepoint 页面开发指南
七、SharePoint2010服务器端对象模型 八、SharePoint2010客户端对象模型 九、利用 VS2010 进行 SharePoint 开发 十、SharePoint 2010对功能框架和解决方案打包的调整 十一、SharePoint WebPart部件开发 十二、...
所谓的客户端对象模型就是调用了背后的...本文讲阐述如何使用.NET托管代码来访问SharePoint对象模型。 ECMAScript Client OM需要注意的几个点 ECMAScript仅能够在SharePoint站点里面使用,不能够在其他的Asp.NET站点
Sharepoint 2016 开发资料汇总,包含:服务器安装配置、开发资料
指导如何基于sharepoint 2010平台进行定制,开发。
较为详细地介绍了 SharePoint Online 的项目概念,及开发指南
用于sharepoint webpart 的开发,用此软件之后直接开发usercontrol即可。和国内的quickpart 差不多
SharePoint 2013开发入门经典 第3版
亮剑.NET SharePoint Server 2007开发实战 完整版。 学习SharePoint 的好书。
Office SharePoint Server2007开发入门指南 ch01.rar
亮剑.NET:SharePoint Server 2007开发实战
sharepoint,母版页,内容页,webpart