以编程方式添加和删除 Web.config 设置

http://msdn.microsoft.com/zh-cn/library/bb861909.aspx

在 Microsoft SharePoint Foundation 中,修改 web.config 设置的一种方法是使用 Microsoft.SharePoint.Administration 命名空间的 SPWebConfigModification 类,这使得您能够动态地对实体进行注册。这些修改保留在配置数据库中,在那里,它们充当一种虚拟 web.config,后者其实上充当 SharePoint Foundation Web 应用程序的 .config 文件堆栈的最后一层。在调用SPWebService.ApplyWebConfigModifications 方法时,所做更改才会生效。

提示提示

有时这些更改也会写入物理 web.config 文件中,但是 SharePoint Foundation 并不总是将所做修改写入物理文件,因此该文件并不总是反映已应用的每个 SPWebConfigModification 对象。在排查 web.config 修改问题时,应检查 SPWebApplication.WebConfigModifications 和 SPWebService.WebConfigModifications 属性以及该物理文件。

注释注释

调用 ApplyWebConfigModifications 的代码只有在前端 Web 服务器的管理员用户上下文中运行时,才能发挥作用。

注释注释

有关用于扩展 web.config 文件的第二种方法的信息,请参阅How to: Create a Supplemental .config File

下面的示例演示如何使用 SPWebConfigModification 类来注册自定义程序集。

C#
VB
 
SPWebService service = SPWebService.ContentService;

SPWebConfigModification myModification = new SPWebConfigModification();
myModification.Path = "configuration/SharePoint/SafeControls";
myModification.Name = "SafeControl[@Assembly='MyCustomAssembly'][@Namespace='MyCustomNamespace'][@TypeName='*'][@Safe='True']";
myModification.Sequence = 0;
myModification.Owner = "User Name";
myModification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
myModification.Value = "<SafeControl Assembly='MyCustomAssembly' Namespace='MyCustomNamespace' TypeName='*' Safe='True' />";
service.WebConfigModifications.Add(myModification);
 
/*Call Update and ApplyWebConfigModifications to save changes*/ 
service.Update();
service.ApplyWebConfigModifications();

在示例中,Name 属性包含一个唯一标识节点的 XPath 语句,这将确保不会向文件添加节点的重复项。

调用 ApplyWebConfigModifications 方法将安排一个计时器作业以在整个服务器场中部署更改。若要将 web.config 修改应用于特定的 Web 应用程序,请将此修改添加到 Web 应用程序的web.config 修改集 (WebConfigModifications) 中。例如,您可以使用 oWebSite.Site.WebApplication.WebConfigModifications.Add(MyModification) 将 web.config 修改添加到特定网站的父 Web 应用程序中。即使是将 web.config 修改添加到单个 Web 应用程序,您也仍旧必须调用 ApplyWebConfigModifications

用于移除配置设置的代码都类似,只是您要执行的修改是移除 配置设置而已。下面的示例演示如何移除配置设置。请注意,您的代码必须仍然调用 ApplyWebConfigModifications

C#
 
SPWebConfigModification configModFound = null;
SPWebApplication webApplication = SPWebApplication.Lookup(new Uri("http://localhost/"));
Collection<SPWebConfigModification> modsCollection = webApplication.WebConfigModifications;

// Find the most recent modification of a specified owner
int modsCount1 = modsCollection.Count;
for (int i = modsCount1 - 1; i > -1; i--)
{
    if (modsCollection[i].Owner == "User Name")
    {
        configModFound = modsCollection[i];
    }
}

// Remove it and save the change to the configuration database  
modsCollection.Remove(configModFound);
webApplication.Update();

// Reapply all the configuration modifications
webApplication.Farm.Services.GetValue<SPWebService>().ApplyWebConfigModifications();

转载于:https://www.cnblogs.com/ahjxxy/archive/2012/05/01/2478353.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值