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. maven ClassNotFoundException: org.springframework.web.context.ContextLoader

    信息: Starting Servlet Engine: Apache Tomcat/6.0.32 2012-3-31 9:39:40 org.apache.catalina.core.Standar ...

  2. SQLLoader5(从多个数据文件导入到同一张表)

    从多个数据文件导入到同一张表很简单,只需要在INFILE参数指定多个数据文件的路径即可.数据文件1:test1.txt1111 ALLE SALESMAN2222 WARD SALESMAN数据文件2 ...

  3. 前端--关于CSS文本

    文本是网页中最重要的一种内容形式,文本几乎可以写在任何地方,块级元素中可以写行内元素中也可以写.文本都是由一个个字符组成的 ,在css布局中,每一个字符都有一个em框,通常font-size设置的大小 ...

  4. 2016 ACM/ICPC Asia Regional Shenyang Online

    I:QSC and Master 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5900 题意: 给出n对数keyi,vali表示当前这对数的键值和权值 ...

  5. iOS 面试题汇总

    1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承;可以实现多个接口,通过实现 ...

  6. (原)调用jpeglib对图像进行压缩

    网址:http://www.cnblogs.com/darkknightzh/p/4973828.html.未经允许,严禁转载. 参考网站: http://dev.w3.org/Amaya/libjp ...

  7. js post传值

    一种是ajax传值,另一种是post传值, ajax传值: $.ajax({ url: "AjaxTxt/Fild.ashx?Name=duibi&dates=" suzk ...

  8. ImageView一例

    参考自<疯狂android讲义>2.4节 效果如下: 当点击图上某点时,将之附近放大至下图. 布局文件: <LinearLayout xmlns:android="http ...

  9. php二分查找

    // 递归版本 function bin_sch($arr,$low,$high,$val) { if($low<$high){ $mid = intval(($low+$high)/2); i ...

  10. 关于link, visited, hover, active

    LoVe/HAte 如果只是希望点击的时候显示背景色,那么只需要设置 :active,无需设置:hover #navbar:active, #backbtn:active { background-c ...