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

SharePoint开发 - 使用Session(代码修改webconfig)的更多相关文章

  1. .net代码修改webconfig

    /// <summary> /// 写入web.config /// </summary> /// <param name="item">app ...

  2. 运行时动态修改webconfig

    网站运行时,如果直接手动修改webconfig.xml,会造成线程池重启,对于PV大的网站来说风险是很大的,并且如果有多台服务器,逐台修改也会造成数据不一致. .NET 2.0后可以通过代码修改web ...

  3. SharePoint发展 - 使用Session(代码更改webconfig)

    博客地址 http://blog.csdn.net/foxdave SharePoint启用Session能够使用Powershell,戳这里:能够改动webconfig. 本篇叙述的重点是通过fea ...

  4. 向SharePoint页面添加后台代码

    转:http://www.cnblogs.com/chenzehe/archive/2009/12/25/1631863.html 在本文中,我将跟大家一起讨论,为MOSS的页面添加服务器端代码的另一 ...

  5. SharePoint开发 - 自定义导航菜单(一)菜单声明与配置

    博客地址 http://blog.csdn.net/foxdave 本篇描述自定义sharepoint菜单的一种方式,自定义菜单适用于一些门户等需求的网站 自定义的菜单有自己的数据源,可以是数据表,可 ...

  6. 转载 SharePoint开发部署WSP解决方案包

    转载原出处: http://642197992.blog.51cto.com/319331/1582731 注:本文所讲内容以SharePoint2013版本为例,开发工具以VS2013为基础.历史版 ...

  7. 步步为营 SharePoint 开发学习笔记系列总结

    转:http://www.cnblogs.com/springyangwc/archive/2011/08/03/2126763.html 概要 为时20多天的sharepoint开发学习笔记系列终于 ...

  8. SharePoint开发

    做SharePoint开发有时候是一件比较痛苦的事情,毕竟庞大的框架总是笨重的~~ 往往如果采取传统的方式开发SharePoint的话,更改一个代码需要有以下操作: 1)更改代码 2)VS编译——&g ...

  9. Spring+SpringMVC+MyBatis整合进阶篇(四)RESTful实战(前端代码修改)

    前言 前文<RESTful API实战笔记(接口设计及Java后端实现)>中介绍了RESTful中后端开发的实现,主要是接口地址修改和返回数据的格式及规范的修改,本文则简单介绍一下,RES ...

随机推荐

  1. VB6 GDI+ 入门教程[1] GDI+介绍

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[1] GDI+介绍 2009 年 6 月 18 日 17 ...

  2. VC++全局变量初始化

    目录 第1章说明    2 1.1 程序启动    2 1.2 强符号.弱符号    2 1.3 动态初始化顺序    3 1.4 exe调用dll    4 1.5 禁用动态初始化    4 1.6 ...

  3. 有用的dede表单代码

    <form action="" class="demoform">                <table>             ...

  4. 浏览器编码的函数简介escape(),encodeURI(),encodeURIComponent()

    1.escape() escape()是js编码函数中最古老的一个.虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起. 实际上,escape()不能直接用于 ...

  5. 浅谈Java中的深拷贝和浅拷贝

    转载: 浅谈Java中的深拷贝和浅拷贝 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(bool ...

  6. js高级程序设计(三)基本概念

    数据类型 ECMAscript中有五种简单数据类型Undefined,Null,Boolean,Number,String 还有一种复杂数据类型Object. typeof操作符 typeof可能返回 ...

  7. 初学java之事件响应(结合接口来设置在同一个界面上!)

    package wahaha; public class test_1 { public static void main( String args[] ) { WindowActionEvent w ...

  8. Sum Root to Leaf Numbers [LeetCode]

    Problem description: http://oj.leetcode.com/problems/sum-root-to-leaf-numbers/ Basic idea: To store ...

  9. 个人介绍和GitHub

    基本信息: 姓名:陈晖 学号:1413042068 班级:网工143 兴趣爱好:看小说,打游戏,听古风音乐,打羽毛球,骑行等 个人编程能力不高,写的代码都是作业…… GitHub注册流程: 对于Git ...

  10. 解决Putty连接不上服务器的方法

    1.vi /etc/ssh/sshd_config 将PermitRootLogin的注释取消,或者将no改为yes. 2.service sshd restart 3.setup命令进入将防火墙关闭 ...