オブジェクト モデルを使用して Web.config を修正する

Windows SharePoint Services 3.0 では、変更内容を記述した XML ファイルを作成して Web.config 設定を変更するか、エンティティの動的な登録を可能にする Microsoft.SharePoint.Administration 名前空間の SPWebConfigModification クラスを使用して同じタスクをプログラム的に実行することができます。

以下の例は、SPWebConfigModification クラスを使用してカスタム アセンブリを登録する方法を示します。この例を実装するアプリケーションを作成する方法の詳細については、「Visual Studio で SharePoint Web サイトのプログラムによるカスタマイズ作業を開始する」を参照してください。

Dim service As SPWebService = SPWebService.ContentService

Dim myModification As 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()
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 サイトの親 Web アプリケーションに Web.config の変更を追加します。

注意

コードを実行するには、フロントエンド Web サーバーの管理者でなければなりません。