设为首页 收藏本站
查看: 563|回复: 0

[经验分享] Sharepoint学习笔记--存取Sharepoin配置信息的10条途径

[复制链接]

尚未签到

发表于 2015-9-28 11:55:11 | 显示全部楼层 |阅读模式
  如何保存配置信息,是开发Sharepiont应用必然遇到的问题,这里列举了10条途径,它们有各自不同的适用环境以及优缺点。
   1、使用App/Web的Config文件
   Sharepoint的有关Web.config 文件包含在文件系统中的以下文件夹中:

  • /inetpub/wwwroot/wss/VirtualDirectories/端口号—为SharePoint 内容Web 应用程序定义配置设置的web.config 文件。
  • /inetpub/wwwroot/wss/VirtualDirectories/管理中心的端口号—为SharePoint 管理中心应用程序定义配置设置的web.config 文件。
  • /inetpub/wwwroot/wss/VirtualDirectories/端口号\wpresources —在Web 应用程序的Web 部件资源中使用的web.config 文件。
  • //program/ Files\Common Files\Microsoft Shared\Web Server Extensions\wpresources —在全局程序集缓存的Web 部件资源中使用的web.config 文件。
  • %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\CONFIG —共同定义用于扩展其他Web 应用程序的配置设置的web.config 文件和其他.config 文件。
  • %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI —为/_vti_bin 虚拟目录定义配置设置的web.config 文件。
  • %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS —为/_layouts 虚拟目录定义配置设置的web.config 文件。
  在创建SharePoint Foundation Web 应用程序时,顶级web.config 文件位于Web 应用程序的内容根文件夹中,该文件为服务器定义配置设置(例如,Web 部件的HTTP 处理)。
  用于Web 部件资源的另一个web.config 文件位于同一根文件夹中的\wpresources 文件夹中。
     你可以通过编程来修改上面的某些Webconfig文件(如使用 Microsoft.SharePoint.Administration 命名空间的 SPWebConfigModification 类)。
  Web.config这种方式适用于配置信息需要在Web-application的范围内有效的情景,但应用起来略显繁重。
  
  2、使用SharePoint List
     有人采用在数据库中创建数据表来存取配置信息,这样做也不是不行,但在Sharepoint Solution开发中这并不是好的方法。你可以使用一个Sharepoint List来代替数据库表的方式,因为这样比较简单,你所创建的Sharepoint List可以包含Title与Value两个数据列,这样你就可以把相关配置信息保存到这个List中了。采用这种方式的好处是你无需再开发一个用户管理界面来管理你的配置信息,因为在Sharepoint中这些都是随着List自动具备的,你只需要在这个List上设置相关的Permission就行了(因为不是谁都可以进来查看和修改的)。当然这样做也有不足,那就是你需要另外的配置信息来告诉你上哪儿去找这样的List,感觉好像又绕了一圈回来了。

  
    3、使用 SPList.RootFolder.Properties
如果想要存取与List相关联的配置信息,你可以使用SPList.RootFolder.Properties。


//Get Value
SPList.RootFolder.Properties["vti_listservertemplate"]=MyValue
//Set Value
string MyValue =SPList.RootFolder.Properties["vti_listservertemplate"]  
  
  4、使用Web Part Storage
我们可以使用类似于[Personalizable(PersonalizationScope.Shared), WebPartStorage(Storage.Shared)] public string title { } 的形式来存取与Web Part有关的配置信息。


#region Webpart Properties
[WebBrowsable(true),
Category("Facebook Settings"),
Personalizable(PersonalizationScope.Shared),
WebPartStorage(Storage.Shared),
DefaultValue(""),
WebDisplayName("User Id / User Name"),
WebDescription("Please enter user id")]
public string UserID { get; set; }
[WebBrowsable(true),
Category("Facebook Settings"),
Personalizable(PersonalizationScope.Shared),
WebPartStorage(Storage.Shared),
DefaultValue("10"),
WebDisplayName("Wall Count"),
WebDescription("Please enter number of wall you want to display")]
public int WallCount { get; set; }
#endregion     
  5、使用SPWeb object
  SPWeb object有一个名为Properties的持久性StringDictionary属性,它可以被用来保存与Site有关的特定的配置信息,并且此配置可以在你的整个Farm上都有效。你可以使用如下的代码来操作它:


SPWeb  web = ...;  
// set the value
web.Properties["TheSetting"] = "the value";   
// update the value   
web.Properties.Update();   
// get the value   
string val = web.Properties["TheSetting"];  因此,这种方式用于保存key/value形式的配置信息时很有效,而当需要保存比较复杂的配置信息时,就不那么方便了,你需要把那些相对复杂的配置信息序列存储成XML模式,并进行序列化/反序列化(serialization/deseralization)。当然,你需要取得 Manged Web的permission才有操作这些配置,此外你还需要开发你自己的用户操作界面来管理这些配置信息。
  
    6、使用SPSite object
   SPSite object与SPWeb object不同,它并没有像SPWeb object的Properties那样的属性,因此,如果你想要存取Site Collection级别的配置信息,你可以变通使用SPSite.RootWeb这个特殊的SPWeb object来达到目的。

  7、使用SPWebApplication Properties
  如果你想要在Web Application级别存取配置信息,而你又并不想修改web.config,这种情况下,你可以使用SPWebApplication object。SPWebApplication object继承自SPPersisted Object,它也有一个名为Properties的HashTable属性,你可以使用它来存取Key/Value形式的配置信息,对于比较复杂的信息也可以通过序列化来进行处理。示例代码如下:


SPWebApplication webApp = ...   
object obj = ...   
// set value  
webApp.Add("TheSetting", obj);   
// persist it  
webApp.Update();  这种方式需要用户以Farm Administrator权限进行操作并且你需要构建你自己的操作管理界面。
  
    8、 使用Custom SPPersistedObjects
  或许使用Custom SPPersistedObjects是最好的方式来存取Web Application的配置信息了,这种方式的好处是在存取较为复杂的配置信息时比较方便,你可以创建一个继承自SPPersistedObject的类,把需要存取的配置设定为此类的属性,并把这些属性标记为Persisted。示例代码如下:


public class TheSettings: SPPersistedObject
{  
    public TheSettings() {}     
    public TheSettings(string name, SPPersistedObject parent, Guid id): base(name, parent, id) { }        
    [Persisted]  site.RootWeb.RootFolder.Properties.Add("SiteName","YourSite");  
    public string WebServiceUrl;  
}  然后你可以使用SPWebApplication  GetChild方式来提取你上面所保存的配置信息。


   TheSettings settigs = webApplication      
  .GetChild<TheSettings>("theSettings");  你可以创建两个静态方式来方便你的操作。  当然,这种方式仍然需要Farm Administrator,并且你需要创建你自己的管理界面。  


  public static TheSettings GetSettings(SPWebApplication webApplication)
{        
    TheSettings settings = webApplication.GetChild<TheSettings>("theSettings");         
   if(settings == null) {            
      return TheSettings.CreateNew(webApplication);}      
      return settings;     }     
    public static TheSettings CreateNew(SPWebApplication webApplication)
      { return new TheSettings("theSettings",  webApplication, Guid.NewGuid());}  
  9、 使用Feature Folder中的XML文件
    你可以把配置信息保存到XML文件中,然后把这个文件放置到对应的Feature Folder下,这种方式的特点是配置信息不依赖于Sharepoint本身,并且一般是不让用户去直接修改的(即:存放的是静态配置信息)。
  
  10、一个Config Store的Framework
你可以获取这个Framework(Sharepoint Config Store),这个Framework可以支持你把配置信息保存到List上,并且提供了API来提取你所保存的配置信息,这些配置信息可以是比较复杂的对象,它们被保存为XML格式。
  这里就列举了10个与Sharepoint Solution开发中关于存取配置信息的途径,其中的代码样例只是示意参考,你需要查阅具体的技术文本去使用相关的内容,因为这里只是扫描一下有关存取配置信息的手段,所以应用代码不是重点。
  相信你还使用了其他的手段,请写出来与大家分享。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119956-1-1.html 上篇帖子: 从零开始做基于 SharePoint 的简易项目管理应用 下篇帖子: Sharepoint 2010 用VS定制Master,并且每个Web应用同一个Master
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表