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. MVC Razor 一些常用的方法

    一.在ASP.NET MVC中,创建视图最典型的方式是调用一个action方法,它使用模型准备视图数据.action方法然后调用控制器的视图方法创建视图. 1 <% Html.RenderAct ...

  2. js获取 input file 图片缩略图

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 关于asp:login控件和验证码的问题?(转)

    1.验证码页面添加.2.将这验证码页面添加到login控件中:拖曳一Login控件,将之切换到模式下,在Html源文件中在表格中密码那行后添加: <tr>    <td style= ...

  4. 创建一个简单的配置android编译环境的脚本

    由于有多个Android项目,每个项目配置编译环境时选项都不同,所以尝试写一个sh脚本来完成这个功能.     首先进入bin文件夹,新建一个文件enbuild $ cd ~/bin $ touch ...

  5. WebBrowser中取对应的图片资源

    在客户端中使用webbrower控件,控件中已显示网页,对应的图片资源应已下载完,下面从缓存中找到图片资源,两种方法都可 1.GetUrlCacheEntryInfo http://msdn.micr ...

  6. iOS Layer CABasicAnimation

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  7. 关于C语言中的强符号、弱符号、强引用和弱引用的一些陋见,欢迎指正

    首先我表示很悲剧,在看<程序员的自我修养--链接.装载与库>之前我竟不知道C有强符号.弱符号.强引用和弱引用.在看到3.5.5节弱符号和强符号时,我感觉有些困惑,所以写下此篇,希望能和同样 ...

  8. [翻译]Orchard文档-命令行基架

    Code generation是一个用于创建附加文件和扩展的自动化任务Orchard模块.这个功能对开发者创建控制器[Controllers].数据迁移类[Data Migration].模块[Mod ...

  9. Maven的使用--Eclipse在线安装Maven插件m2e

    我使用的Eclipse版本是3.7(Indigo) 通过Eclipse的help选项,点击“Install New Software...”弹出安装对话框, 点击add按钮,在Location里输入h ...

  10. You and your research

    英文版http://www.cs.virginia.edu/~robins/YouAndYourResearch.html 视频版http://www.youtube.com/watch?v=a1zD ...