web.configの変更は、パッケージファイル/CAMLだけでは実行できないと確信しています。
ただし、実行できるのは、 SPWebApplication.WebConfigModificationsを介してweb.configを変更するWebApplicationFeatureRecieverをデプロイすることです。
これが私のプロジェクトのコードスニペットです。詳細については、Code Project KBを参照してください(この最初のビットは、いくつかのメモが付いた便利な関数です)。
// For WebConfigModifications access,
// see http://www.codeproject.com/KB/sharepoint/SPWebConfigModTool.aspx
// Hints:
// app.WebConfigModifications.Add(new SPWebConfigModification
// {
// Type = [add/update child node?]
// Path = [XPath of parent node]
// Name = [XPath to identify child node UNIQUELY]
// Owner = [Use GUID to identify as ours]
// Sequence = [Sequence number, likely 0 for only one]
// Value = [XML node to add/update]
// });
void ModfiyWebConfig (SPWebApplication app, string path, string name, XElement node)
{
app.WebConfigModifications.Add(new SPWebConfigModification
{
Type = SPWebConfigModificationType.EnsureChildNode,
Path = path,
Name = name,
Owner = OwnerId,
Sequence = 0,
Value = node.ToString(),
});
}
Get / init SPWebApplication
var app = properties.Feature.Parent as SPWebApplication;
キュー/セットアップの変更
ModfiyWebConfig(app,
"configuration/system.webServer/modules",
"add[@name='ASPxHttpHandlerModule']",
new XElement("add",
new XAttribute("name", "ASPxHttpHandlerModule"),
new XAttribute("type", aspxHandlerModule)));
変更を適用する
app.WebService.ApplyWebConfigModifications();
app.Update();