SharePoint API には、web.configを変更するためのクラスが用意されています。
このクラスを使うことで、たとえばFeatureのインストール時に自動的にweb.configを変更するということができるようになります。
web.configの変更には、SPWebConfigModificationクラスとSPWebServiceクラスを利用します。
例として、web.config内のappSettingsに値を追加する処理を書いてみます。
1.変更内容をSPWebConfigModificationクラスにセットする。
SPWebConfigModificationクラスは、web.configに加える変更情報を保持するクラスです。
web.configを変更したい場合には、このクラスに変更内容をセットすることになります。
1 | <span class="lnum"> 1: </span>SPWebConfigModification appSetting = <span class="kwrd">new</span> SPWebConfigModification(); |
1 | <span class="lnum"> 2: </span>appSetting.Path = <span class="str">"configuration/appSettings"</span>; |
1 | <span class="lnum"> 3: </span>appSetting.Name = <span class="str">"add[@key='NewKey']"</span>; |
1 | <span class="lnum"> 4: </span>appSetting.Owner = <span class="str">"orivers"</span>; |
1 | <span class="lnum"> 5: </span>appSetting.Sequence = 0; |
1 | <span class="lnum"> 6: </span>appSetting.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode; |
1 | <span class="lnum"> 7: </span>appSetting.Value = <span class="str">"<add key='NewKey' value='NewValue'/>"</span>; |
各プロパティの詳細はヘルプを見ていただくとして、ここでは簡単に説明します。
Pathプロパティに変更対象となるノードを指定し、Valueプロパティに変更内容を指定します。
Nameプロパティは、この変更を一意に識別するための値です。
Ownerプロパティも、Nameプロパティと合わせて、変更を一意に識別するために使用します。
Typeプロパティは、変更内容に合わせたタイプを指定します。
2.変更を実行する。
SPWebConfigModificationクラスの作成が完了したら、web.configのアップデートをしたいWebアプリケーションで変更を実行します。
1 | <span class="lnum"> 1: </span>SPWebService service = SPWebService.ContentService; |
1 | <span class="lnum"> 2: </span>service.WebConfigModifications.Add(appSetting); |
1 | <span class="lnum"> 3: </span>service.Update(); |
1 | <span class="lnum"> 4: </span>service.ApplyWebConfigModifications(); |
SPWebService.ContentServiceプロパティで、変更対象のWebアプリケーションを取得しています。
取得したWebアプリケーションのWebConfigModificationsコレクションに、手順1で作成したSPWebConfigModificationクラスのインスタンスを指定し、Updateメソッドを実行します。
最後にApplyWebConfigModificationsメソッドを実行して、ファーム全体に変更を反映します。
これで変更完了です。