無効な SPWebConfigModifications をフラッシュするにはどうすればよいですか?
ソリューションの一部としていくつかの無効な変更を実行しようとしましたが、ApplyWebConfigModifications を実行するたびに無効な変更を実行しようとするたびに、それらを取り除くことができません。
それらをシステムからどのようにフラッシュしますか?
無効な SPWebConfigModifications をフラッシュするにはどうすればよいですか?
ソリューションの一部としていくつかの無効な変更を実行しようとしましたが、ApplyWebConfigModifications を実行するたびに無効な変更を実行しようとするたびに、それらを取り除くことができません。
それらをシステムからどのようにフラッシュしますか?
将来の参考のために(3日間壁に頭をぶつけた後):
このツールを使用できます:
http://ianankers.wordpress.com/2011/07/14/web-config-modification-manager-for-sharepoint-2010/
ファームにインストールされているすべての WebApp のすべての mod が一覧表示されます。新しいものを追加したり、古いものを削除したりできます。
ツールは webapp レベルの変更のみを一覧表示します。ファーム レベルで mod をインストールした場合は、次のようなスクリプトを実行する必要があります。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Navigation;
using Microsoft.SharePoint.Administration;
namespace ModTool
{
class Program
{
static void Main(string[] args)
{
SPSite site = new SPSite(args[0]);
SPWebService service = site.WebApplication.Farm.Services.GetValue<SPWebService>();
if (args.Length == 1 || string.IsNullOrEmpty(args[1]))
{
Console.Out.WriteLine("Listing all Mods and Owners");
foreach (SPWebConfigModification mod in service.WebConfigModifications)
{
Console.Out.WriteLine("Mod:" + mod.Name + ", Owner:" + mod.Owner);
}
}
else
{
Console.Out.WriteLine("Removing all mods owner:" + args[1] + ", reference site:" + args[0]);
List<SPWebConfigModification> toDelete = new List<SPWebConfigModification>();
foreach (SPWebConfigModification mod in service.WebConfigModifications)
{
if (mod.Owner == args[1])
{
toDelete.Add(mod);
}
}
Console.Out.WriteLine("Found " + toDelete.Count + "Mods");
foreach (SPWebConfigModification mod in toDelete)
{
service.WebConfigModifications.Remove(mod);
}
service.Update();
SPWebService.ContentService.ApplyWebConfigModifications();
Console.Out.WriteLine("Done!!");
}
}
}
}
使用法:
ModTool http://site - List all the mods for the farm, site is just an entry point
ModTool http://site owner -Deletes all the mods for the far wich owner is "owner"