我很肯定web.config修改不能只用包文件/ CAML來完成。
但是,可以做的是部署一個WebApplication Feature Reciever,通過SPWebApplication.WebConfigModifications修改web.config。
這裏是從我的項目的代碼片段,看到the the 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(),
});
}
獲取/初始化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();
欣賞快速和詳細的反應!不過,我有些困惑。如果我採用此路線並修改特定於QA的web.config,則需要再次針對特定於生產的web.config進行更改,是否正確?如果是這樣,那麼它仍然是直接改變web.config而不是使用這個代碼。很確定我在這裏失去了一些東西。 – tempid
@temp理想情況下,QA /測試和生產環境會相互模仿。但是你是正確的,因爲這仍然沒有解決所提出的一次性設置;如果找到這樣的「通用」配置,它*做的*是允許該過程被自動化*。 – 2012-11-13 19:37:30
我明白你的意思了。感謝您指點我正確的方向。非常感激。 – tempid