摘要:1. Asp.net的三种Session机制 在ASP.NET的程序中要使用Session对象时,必须确保页面的@page指令中EnableSessionState属性是True或者Readonly,并且在web.config文件中正确的设置了SessionState属性。 ASP.NET中Session的状态保持是由web.config文件中的标记下的标记的mode属性来决定的。该属性有四种可能的值:Off、Inproc、StateServer和SQlServer。 设为Off会禁用Session。 Inproc是缺省的设置,这种模式和以前的ASP的会话状态的方法是类似的,会话的状态...
阅读全文
随笔分类 - 软件开发
软件开发,是技术的应用,也是艺术的创造。
摘要:在事件接收器中使用对象不要在事件接收器内实例化 SPWeb、SPSite、SPList 或 SPListItem 对象。实例化这些对象而非使用通过事件属性传递的实例的事件接收器可能会导致以下问题: 大量额外的数据库往返(一次写入操作会导致在每个事件接收器中出现多达 5 次的额外往返)。 对这些实例调用 Update 方法会导致在其他注册的事件接收器中的后续 Update 调用失败。 不良的编码实践 在事件接收器内安装一个 SPSite 对象 public override void ItemDeleting(SPItemEventProperties properties){ using (S
阅读全文
摘要:SPWeb.ParentWeb 属性释放清理是由 SharePoint Foundation 和 SharePoint Server 自动处理的。良好的编码实践using (SPSite site = new SPSite("http://www.msiw.net/")) { using (SPWeb web = site.OpenWeb()) { SPList list = web.Lists["Announcements"]; SPWeb parentWeb = list.ParentWeb; //No explicit dispose requir
阅读全文
摘要:通常,调用应用程序无论何时使用新 SPSite 构造函数(任何签名),都应该在用完对象之后调用 Dispose() 方法。如果 SPSite 对象是从 GetContextSite() 中获得的,则该调用应用程序不 应该释放对象。因为 SPWeb 和 SPSite 对象会保留通过此方式派生的内部列表,所以释放对象可能会导致 SharePoint 对象模型行为无法预料。SharePoint Foundation 在页面完成之后会在内部枚举此列表以正确释放对象。SPSiteCollection 类SPSiteCollection.Add 方法SPSiteCollection.Add 方法将创建并返
阅读全文
摘要:可以采用某些编码技术来确保释放对象。这些技术包括在代码中使用以下内容: Dispose 方法using 语句try 、catch 和 finally 块Dispose 与 Close 方法的用途SPWeb 对象和 SPSite 对象的 Dispose 和 Close 方法作用相同。Dispose 方法调用对象的 Close 方法。我们建议调用 Dispose 方法,而不是调用 Close 方法,因为 SPWeb 和 SPSite 对象实现 IDisposable 接口,标准 .NET Framework 垃圾收集调用 Dispose 方法从内存中释放与对象关联的任何资源。using 语句通过使
阅读全文
摘要:通过提出以下问题,可以确定是否可能存在错误释放的对象:应用程序池是否频繁进行回收,尤其是在负载过重的情况下(假设应用程序池被设置为在达到内存阈值时进行回收)?内存阈值应该在 800 MB 到 1.5 GB 之间,假设 RAM 至少为 2 GB。如果将应用程序池回收设置为在较接近 1 GB 时发生,则效果最佳,但是请根据试验来确定最适合您的环境的设置。如果回收设置太低,则系统可能因应用程序池频繁进行回收而遇到性能问题。如果设置太高,则系统可能会因页面交换、内存碎片和其他问题而遇到性能问题。系统性能是否低下,尤其是在负载过重的情况下?当内存使用量开始增加时,系统必须进行补偿,例如,通过对内存进行分
阅读全文
摘要:Microsoft SharePoint Foundation 2010 和 Microsoft SharePoint Server 2010 对象模型中的对象可用作处理 SharePoint Foundation 数据的接口。开发人员经常调入对象模型以从 SharePoint Foundation 2010 和 SharePoint Server 2010 数据存储中读取数据或向其中写入新数据。SharePoint Foundation 2010 和 SharePoint Server 2010 对象模型包含实现 IDisposable 接口的对象。使用这些对象时必须采取防范措施,防止它们长
阅读全文
摘要:许多开发人员都使用 Microsoft .NET Framework 缓存对象(例如 System.Web.Caching.Cache)帮助更好地利用内存并提高总体系统性能。但是,许多对象都不是“线程安全的”,缓存这些对象会导致应用程序失败,并导致意外或无关的用户错误。缓存数据和对象缓存是提高系统性能的一种很好的方法。但是,您必须根据线程安全性的需要权衡缓存的好处,因为有些 SharePoint 对象不是线程安全的,缓存会导致它们行为异常。缓存非线程安全的 SharePoint 对象您可能会尝试通过缓存从查询返回的 SPListItemCollectio
阅读全文
摘要:如果使用 SharePoint 对象模型编写自定义解决方案,应该注意与性能、可扩展性和可伸缩性相关的常见问题。本主题可以帮助您有效地对现有 SharePoint 应用程序进行故障排除并提高其性能,或者编写新 SharePoint 应用程序。在这两种情况下,都需要了解如何使 SharePoint 对象模型高效地工作,以及如何将常规编程技巧专门应用于 SharePoint 平台。使用SPQuery对象设计合理的查询可以帮助您避免随着时间的推移而可能出现的性能问题,因为网站的列表和文件夹数目会不断增加。以下技巧可以帮助您尽可能最高效地使用 SPQuery 对象。使用界定的 SPQuery 对象。Ro
阅读全文
摘要:写了个自动备份多个站点集的脚本(backupscript.bat)可以生成文件名如"Site80_20080227.bak"的备份文件。@echo offecho ++++++++++++++++++++++++++++++++++++++++++++echo Backup of MOSS site!echo Written by WangWei(shangmeizhai@hotmail.com)...
阅读全文
摘要:最近有个朋友问我,说他们公司开始上OCS2007,希望它能与应用系统进行集成。在winForms 上的集成,已经实现得差不多了,但是与web 系统的集成,还不知道如何进行,他们的集成要求是:用户进到每一个系统,都希望能看到用户的在线状态,并且可以与他方便地进行即时通讯。 在这里就写一下怎样使Web系统中集成OCS在线状态功能。其实这个功能早在LCS时代就有了。集成的方法很简单。通过Offic...
阅读全文
摘要:如果你想在MOSS中自定义列表或文档库中的上下文菜单,可以使用CustomAction的Feature来实现,也可以直接在页面上加一个内容编辑器(包括特定的一段Javascript)来实现,比如: 个人感觉后面一种方式很有趣,灵活性较大。搜索了一下,发现两篇关于实现的方法,一中一英,呵呵,希望对你有所帮助。 用javascript自定义SharePoint文档库/列表项菜单 http://...
阅读全文
摘要:添加导航结点: SPNavigationNodeCollection quickLaunchNodes = newSite.Navigation.QuickLaunch; SPNavigationNode menuItem = new SPNavigationNode(siteTitle, “/” + siteTitle + ...
阅读全文
摘要:虽然SharePoint Server 2007使用了ASP.NET 2.0的基础页面模型,SharePoint页面基本上也是基于标准的aspx技术来构建,但SharePoint Server 2007的页面模型仍然要比普通的ASP.NET应用复杂很多。对于一个SharePoint开发人员(和设计人员),了解SharePoint的页面模型是非常非常重要的。 在SharePoint 2007中,将...
阅读全文
摘要:下面是一个最简单的应用程序页面的示例代码,只要把页面拷贝到_layouts目录下即可。 Site Title: Site ID: Hello World Hello World 这段代码把后台的onload代码写在了aspx页面上,但其实我更愿意使用code-behind的方式来编写代码。 比如我要建一...
阅读全文
摘要:目的:有效的汇集群友的MOSS开发经验与能力,与群友分享知识,共享经验。 口号:群策群力,愚公移山! 手段:翻译SDK文章,编写MOSS开发相关的文章,汇编成书。 本计划,希望能够通过众多MOSS开发技术爱好者一起汇集丰富的开发资源,同时能够把其中优质的文章或翻译汇编成书。 1. 你可以翻译一篇MOSS SDK中的一篇或几篇文章。 ...
阅读全文
摘要:Site Title Level Language ...
阅读全文
摘要:1. 首先创建一个Field 项目CustomFields. 2. 添加三个类文件:FieldAddressValue.cs ,FieldAddress.cs,AddressFieldControl.cs三个文件. 1) FieldAddressValue.cs源代码如下: using System;using System.Collections.Gener...
阅读全文
摘要:MOSS2007的自定义字段类型是一个非常有用的功能,但在网上相关的实例介绍很少,所以下面就一步一步地介绍怎样来创建一个自定义字段类型,我们的目标是:实现一个具有可配置性的下拉列表框,其选择项目是读取XML文件获得。 实现一个自定义字段类型主要需要完成三种文件的编制:1)定义类型的XML文件;2)定义展现模板*.ascx文件;3)定义后台代码程序集。 这里因为我们想要实现一个可读取XML文件的下拉...
阅读全文
摘要:在注册EventHandler之前,你需要先把你的DLL加入到GAC中,方法有二:1)直接把你的DLL拖进C:\Windows\Assembly目录下;2)使用命令行 gacutil /i mydll.dll 。 注册EventHandler可以使用SharePoint的Feature功能在界面上挂接,也可以使用程序代码进行注册,我们介绍后者。示例代码如下: using Sys...
阅读全文