zoukankan      html  css  js  c++  java
  • SharePoint发展

    博客地址 http://blog.csdn.net/foxdave

    SharePoint启用Session能够使用Powershell,戳这里;能够改动webconfig。

    本篇叙述的重点是通过feature去控制启用session和关闭session。

    新建一个空的SharePoint项目,编写FeatureEventHandler的FeatureActivated和FeatureDeactivating的处理逻辑

    public override void FeatureActivated(SPFeatureReceiverProperties properties)
            {
                SPWebApplication application = (SPWebApplication)properties.Feature.Parent;
                try
                {
                    Config.Update(application);
                    application.Update();
                    application.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
                }
                catch
                {
                    Config.Restore(application);
                }
            }
    
            public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
            {
                SPWebApplication application = (SPWebApplication)properties.Feature.Parent;
                try
                {
                    Config.Restore(application);
                    application.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();
                }
                catch
                {
                }
            }
    这里Config是关于Session的处理类。由于启用和禁用Session本质上还是改动IIS站点的配置。所以获取WebApplication对象。通过代码改动webconfig内容。

    Config类的代码例如以下

    class Config
        {
            private static void ExecUpdate(SPWebApplication webApp, string name, string path, string value, Microsoft.SharePoint.Administration.SPWebConfigModification.SPWebConfigModificationType type)
            {
                SPWebConfigModification modification = new SPWebConfigModification();
                modification.Name = name;
                modification.Path = path;
                modification.Value = value;
                modification.Sequence = 0;
                modification.Type = type;
                modification.Owner = "SP_MIP_Team_EnableSession";
                SPWebConfigModification item = modification;
                webApp.WebConfigModifications.Add(item);
            }
    
            public static void Restore(SPWebApplication webApp)
            {
                webApp.Update();
                List<SPWebConfigModification> configModificationsToRemove = new List<SPWebConfigModification>();
                foreach (SPWebConfigModification spWebConfigModification in webApp.WebConfigModifications)
                {
                    if (spWebConfigModification.Owner == "SP_MIP_Team_EnableSession")
                    {
                        configModificationsToRemove.Add(spWebConfigModification);
                    }
                }
                foreach (SPWebConfigModification configModification in configModificationsToRemove)
                {
                    webApp.WebConfigModifications.Remove(configModification);
                }
                webApp.Update();
            }
    
            public static void Update(SPWebApplication webApp)
            {
                string name = null;
                string path = null;
                string value = null;
                name = "add[@name='Session'][@type='System.Web.SessionState.SessionStateModule']";
                path = "/configuration/system.web/httpModules";
                value = "<add name='Session' type='System.Web.SessionState.SessionStateModule' />";
                ExecUpdate(webApp, name, path, value, SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode);
                name = "enableSessionState";
                path = "/configuration/system.web/pages";
                value = "true";
                ExecUpdate(webApp, name, path, value, SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute);
                name = "add[@name='session'][@type='System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a']";
                path = "/configuration/system.webServer/modules";
                value = "<add name='session' type='System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' />";
                ExecUpdate(webApp, name, path, value, SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode);
            }
    
        }
    这里利用SPWebApplication对象来记录WebConfigModifications,即webconfig变化,这样做的优点是能够很容易地通过代码更改恢复的能力webconfig

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    保存ADO的记录集为XML文件
    [C++] Undefined reference to vtable
    Csdn博客的一个bug
    深入解析ATL(第二版ATL8.0)(1.111.13节)
    不同操作系统下记事本的换行符号
    dom4j学习总结(一)
    关于firefox的copy/paste的问题
    php URL编码解码函数
    php连接MySQL数据库的一些问题
    使用 jQuery progressBar 做文件上传的进度条指示
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4666995.html
Copyright © 2011-2022 走看看