SharePoint开发 - 使用Session(代码修改webconfig)

简介: 博客地址 http://blog.csdn.net/foxdaveSharePoint启用Session可以使用Powershell,戳这里;可以修改webconfig。

博客地址 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

相关文章
|
7月前
|
缓存 前端开发 Java
【二十八】springboot之通过threadLocal+参数解析器实现同session一样保存当前登录信息的功能
【二十八】springboot之通过threadLocal+参数解析器实现同session一样保存当前登录信息的功能
169 1
|
7月前
|
XML 开发框架 .NET
C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
73 1
|
7月前
|
存储 前端开发 搜索推荐
13:Session机制实现用户登录与注销功能-Java Web
13:Session机制实现用户登录与注销功能-Java Web
562 3
|
7月前
|
前端开发 数据管理 Ruby
blog-engine-10-middleman 静态站点生成器,利用了现代 Web 开发中的所有快捷方式和工具
这篇内容介绍了Middleman,一个基于Ruby的静态网站生成器。Middleman的特点包括静态网站生成、模板系统、前端技术支持、数据管理和简单的部署。安装步骤涉及安装Ruby和运行`gem install middleman`。使用方法包括在`source`目录编写内容,使用`middleman server`预览,`middleman build`构建网站,然后部署到服务器。Middleman的优势在于速度、灵活性和数据管理,但需要Ruby知识,且社区规模较小。适合熟悉Ruby并寻求强大建站工具的用户。
|
Java API
JAVA Session会话 Thymeleaf - 视图模板技术配置步骤
JAVA Session会话 Thymeleaf - 视图模板技术配置步骤
226 0
一起谈.NET技术,也玩MVC3.0 Razor自定义视图引擎来修改默认的Views目录结构
刚刚爱上MVC3.0,几个不眠夜的学习越来越有趣。今天随手尝试自定义Mvc3.0的视图引擎,虽然已成功,但是还发现有点小疑问。随手贴出来希望大家指教指教。 MVC的视图文件目录被固定/Views目录内,区域视图文件也是被固定在/Areas目录下,出于好奇和对目录名的敏感,尝试修改它。
775 0
也玩MVC3.0 Razor自定义视图引擎“.NET技术”来修改默认的Views目录结构
刚刚爱上MVC3.0,几个不眠夜的学习越来越有趣。今天随手尝试自定义Mvc3.0的视图引擎,虽然已成功,但是还发现有点小疑问。随手贴出来希望大家指教指教。 MVC的视图文件目录被固定/Views目录内,区域视图文件也是被固定在/Areas目录下,出于好奇和对目录名的敏感,尝试修改它。
1066 0