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

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

  • 相关阅读:
    leetcode 347. Top K Frequent Elements
    581. Shortest Unsorted Continuous Subarray
    leetcode 3. Longest Substring Without Repeating Characters
    leetcode 217. Contains Duplicate、219. Contains Duplicate II、220. Contains Duplicate、287. Find the Duplicate Number 、442. Find All Duplicates in an Array 、448. Find All Numbers Disappeared in an Array
    leetcode 461. Hamming Distance
    leetcode 19. Remove Nth Node From End of List
    leetcode 100. Same Tree、101. Symmetric Tree
    leetcode 171. Excel Sheet Column Number
    leetcode 242. Valid Anagram
    leetcode 326. Power of Three
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4666995.html
Copyright © 2011-2022 走看看