using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Administration;
using System.Reflection;
using System.Linq;
using System.Collections.Generic;
using System.Collections.ObjectModel;

namespace SPSiteHanlder.Features.WebFeature
{
/// <summary>
/// 此类用于处理在激活、停用、安装、卸载和升级功能的过程中引发的事件。
/// </summary>
/// <remarks>
/// 附加到此类的 GUID 可能会在打包期间使用,不应进行修改。
/// </remarks>

[Guid("aa46c131-e224-492a-a623-db98662fafcc")]
public class WebFeatureEventReceiver : SPFeatureReceiver
{
// 取消对以下方法的注释,以便处理激活某个功能后引发的事件。
private const string WebConfigModificatinOwner = "SPSiteHanlder.LogonModule";
private readonly SPWebConfigModification[] Modifications ={
new SPWebConfigModification(){
Owner=WebConfigModificatinOwner,
Name="add[@name='LogonModule']",
Type=SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
Path="configuration/system.webServer/modules",
Sequence=0,
Value=string.Format("<add name='LogonModule' type='SPSiteHanlder.LogonModule,{0}' />",Assembly.GetExecutingAssembly().FullName)
}
};
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWebApplication webApp = properties.Feature.Parent as SPWebApplication;
if (webApp != null)
{
AddWebConfig(webApp, Modifications);
}
}

// 取消对以下方法的注释,以便处理在停用某个功能前引发的事件。

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPWebApplication webApp = properties.Feature.Parent as SPWebApplication;
if (webApp != null)
{
RemoveWebConfig(webApp, "SPSiteHanlder.LogonModule");
}
}
/// <summary>
/// 添加webconfig
/// </summary>
/// <param name="webApp"></param>
/// <param name="modifications"></param>
protected void AddWebConfig(SPWebApplication webApp,IEnumerable<SPWebConfigModification> modifications)
{
foreach (SPWebConfigModification a in modifications)
{
webApp.WebConfigModifications.Add(a);
}
webApp.Update();
webApp.WebService.ApplyWebConfigModifications();
}
protected void RemoveWebConfig(SPWebApplication webApp, string owner)
{
Collection<SPWebConfigModification> modifications = webApp.WebConfigModifications;
Collection<SPWebConfigModification> removeModifications = new Collection<SPWebConfigModification>();
int count = modifications.Count;
for (int i = 0; i < count; i++)
{
var a = modifications[i];
if (a.Owner == owner)
{
removeModifications.Add(a);
}
}
if (removeModifications.Count > 0)
{
foreach (SPWebConfigModification b in removeModifications)
{
webApp.WebConfigModifications.Remove(b);
}
webApp.Update();
webApp.WebService.ApplyWebConfigModifications();
}

}

// 取消对以下方法的注释,以便处理在安装某个功能后引发的事件。

//public override void FeatureInstalled(SPFeatureReceiverProperties properties)
//{
//}

// 取消对以下方法的注释,以便处理在卸载某个功能前引发的事件。

//public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
//{
//}

// 取消对以下方法的注释,以便处理在升级某个功能时引发的事件。

//public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters)
//{
//}
}
}

Sharepoint2010 通过 WebFeature 修改web.config的更多相关文章

  1. 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)

    原文:在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据) 我们都知道,在asp.net中修改 ...

  2. C# 获取 与 修改 web.config中的值(修改Xml文件)

    定义web.config 中 appSettings 节点 <appSettings> <add key="domainExist" value="fa ...

  3. 修改web.config来开启Gzip压缩

    IIS 7.0之后引入的一个IIS配置文件,详细内容参考官方链接http://www.iis.net/learn/get-started /planning-your-iis-architecture ...

  4. 让asp.net程序在修改web.config后不重启

    默认情况下web.config修改后,asp.net程序会被重启.为了防止程序重启,要修改machine.config 文件. machine.config默认在C:\WINDOWS\Microsof ...

  5. ASP.NET程序中动态修改web.config中的设置项目(后台CS代码)

    using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Dra ...

  6. 在VisualStudio 2012中通过SmallSharp压缩js及修改web.config

    在项目中加入一个targets文件,取名my.build.targets 在targets文件中加入内容: <?xml version="1.0" encoding=&quo ...

  7. Asp.Net修改上传文件大小限制(修改web.config)

    i. Configuration节点下 <system.webServer> <security> <requestFiltering> <!--单位为字节  ...

  8. 如何修改Web.Config里面的值

    0.先添加 <add key="MAXNUM" value="6" /> 1.读取值 string maxNum = ConfigurationMa ...

  9. asp.net修改web.config文件

    private void UpdateConfigFile() { var cfg = System.Web.Configuration.WebConfigurationManager.OpenWeb ...

随机推荐

  1. form表单提交校验

    <form id="myForm" action="http://www.365mini.com" method="post"> ...

  2. SQL:deferrable initially deferred

    SQL> create table cust(id number,name varchar2(10));Table created SQL> alter table cust add co ...

  3. windows-JDK环境变量设置

    JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43;CLASS_PATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;p ...

  4. String类中几个简单的常用方法

    这里我们就把 info 这个字符串 通过 “ ” 这个分隔符 分割成几部分 并吧没部分添加到 s 数组里面 注意:只有字符串才能分割 分隔符必须是 char 类型 而且是 字符串 里面存在的, 例如我 ...

  5. 怎样给win7系统硬盘分区

    怎样给win7系统硬盘分区 步骤 一.鼠标右击“计算机” 二.选择“管理”标签 三.打开“计算机管理”窗口 四.选择“磁盘“>>”存储管理“,打开”磁盘管理“页面 如图: 五.右键单击选择 ...

  6. mysql 数据库连接池

    hibernate配置C3P0详解         分类:             hibernate              2013-08-14 16:16     1213人阅读     评论 ...

  7. [转]Python存取XML方法简介

    转自:http://www.cnblogs.com/salomon/archive/2012/05/28/2518648.html 目前而言,Python 3.2存取XML有以下四种方法: 1.Exp ...

  8. Python之路第十二天,高级(4)-Python操作rabbitMQ

    rabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...

  9. shell脚本练习(短路练习)

    #!/bin/bash #By Spinestars#2013-11-11#This is a lvsnap of auto-create Help(){ echo "Usage: ---d ...

  10. Sunscreen(POJ 3614 优先队列)

    Sunscreen Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5898   Accepted: 2068 Descrip ...