SharePoint开发 - 使用Session(代码修改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
SharePoint开发 - 使用Session(代码修改webconfig)的更多相关文章
- .net代码修改webconfig
/// <summary> /// 写入web.config /// </summary> /// <param name="item">app ...
- 运行时动态修改webconfig
网站运行时,如果直接手动修改webconfig.xml,会造成线程池重启,对于PV大的网站来说风险是很大的,并且如果有多台服务器,逐台修改也会造成数据不一致. .NET 2.0后可以通过代码修改web ...
- SharePoint发展 - 使用Session(代码更改webconfig)
博客地址 http://blog.csdn.net/foxdave SharePoint启用Session能够使用Powershell,戳这里:能够改动webconfig. 本篇叙述的重点是通过fea ...
- 向SharePoint页面添加后台代码
转:http://www.cnblogs.com/chenzehe/archive/2009/12/25/1631863.html 在本文中,我将跟大家一起讨论,为MOSS的页面添加服务器端代码的另一 ...
- SharePoint开发 - 自定义导航菜单(一)菜单声明与配置
博客地址 http://blog.csdn.net/foxdave 本篇描述自定义sharepoint菜单的一种方式,自定义菜单适用于一些门户等需求的网站 自定义的菜单有自己的数据源,可以是数据表,可 ...
- 转载 SharePoint开发部署WSP解决方案包
转载原出处: http://642197992.blog.51cto.com/319331/1582731 注:本文所讲内容以SharePoint2013版本为例,开发工具以VS2013为基础.历史版 ...
- 步步为营 SharePoint 开发学习笔记系列总结
转:http://www.cnblogs.com/springyangwc/archive/2011/08/03/2126763.html 概要 为时20多天的sharepoint开发学习笔记系列终于 ...
- SharePoint开发
做SharePoint开发有时候是一件比较痛苦的事情,毕竟庞大的框架总是笨重的~~ 往往如果采取传统的方式开发SharePoint的话,更改一个代码需要有以下操作: 1)更改代码 2)VS编译——&g ...
- Spring+SpringMVC+MyBatis整合进阶篇(四)RESTful实战(前端代码修改)
前言 前文<RESTful API实战笔记(接口设计及Java后端实现)>中介绍了RESTful中后端开发的实现,主要是接口地址修改和返回数据的格式及规范的修改,本文则简单介绍一下,RES ...
随机推荐
- 数据存储之SQLite
SQLite是目前主流的嵌入式关系型数据库,其最主要的特点就是轻量级.跨平台,当前很多嵌入式操作系统都将其作为数据库首选.虽然SQLite是一款轻型数据库,但是其功能也绝不亚于很多大型关系数据库.学习 ...
- Django缓存优化之redis
Redis 概述 Redis 是一个开源的Inmemory key-value 存储系统,性能高,很大程度上补偿了 memcached 的不足.支持多种存储类型,包括 string, list, se ...
- [转]Android_气泡效果
最近在看以前在eoe上收藏的一些源代码,准备将这些代码加上一些自己的注释,然后贴出来,方便自己日后查阅,和刚入门的人来学习. 今天先看一个气泡窗口,先看一下效果图和目录结构,然后再上代码 通过第一幅图 ...
- struts2 I18N 国际化
1. 准备properties文件 globalMessages_en_US.properties globalMessages_zh_CN.properties 2. 配置struts.xml &l ...
- 响应式web设计读书笔记
1.媒体查询可以在链接link标签和具体的CSS中使用: 2.通过<link>标签的 media 属性为样式表指定设备类型和其他条件 中间用and和()来分隔,如下 <link r ...
- MySQL 函数积累
IFNULL(expr1,expr2) // 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值 IF(expr1,expr2,e ...
- Source Insight 中使用 AStyle 代码格式工具
Source Insight 中使用 AStyle 代码格式工具 彭会锋 2015-05-19 23:26:32 Source Insight是较好的代码阅读和编辑工具,不过source in ...
- fork&exec
进程是系统进行资源分配和调度的基本单位,包括代码.数据和PCB进程控制块等资源. fork函数通过系统调用创建一个与原进程相同的子进程. 在调用进程(父进程)中返回一次,返回子进程ID:在子进程返回0 ...
- android 获取字符串的方法
字符串数组可以在value文件夹中声明: 书写的内容是: 两者的读取方式略有不同: 如果是读取数字的话, 使用: context.getResources().getStringArray( R.a ...
- OTA(空中下载技术)
选自:http://baike.baidu.com/link?url=bKOx4Gcgefi17Zt09pRA6zI-p7zzKVkoN07khRVTPfUtqyRMzdG5xURfpnp3wSP_A ...