我已经开发了一个安装程序,它将为IIS 7.5添加一个新网站。在中创建网站后,我想配置其连接字符串。安装后如下图所示:
<connectionStrings>
<add name="DefaultConnection" connectionString="$(ReplacableToken_DefaultConnection-Web.config Connection String_0)" providerName="System.Data.SqlClient" />
<add name="WebContext" connectionString="$(ReplacableToken_WebContext-Web.config Connection String_0)" providerName="System.Data.SqlClient" />
<add name="ActivityContext" connectionString="$(ReplacableToken_ActivityContext-Web.config Connection String_0)" providerName="System.Data.SqlClient" />
</connectionStrings>
我想使用C#配置它们中的每个。这是我尝试过的:
using (ServerManager manager = new ServerManager())
{
Configuration webConfig = manager.GetWebConfiguration(myWebsite.name);
ConfigurationSection directoryBrowseSection = webConfig.GetSection("connectionStrings");
directoryBrowseSection.SetAttributeValue("DefaultConnection", ".\\SQLEXPRESS;Database=_usr;Integrated Security=true");
directoryBrowseSection.SetAttributeValue("WebContext", ".\\SQLEXPRESS;Database=_main;Integrated Security=true");
directoryBrowseSection.SetAttributeValue("ActivityContext", ".\\SQLEXPRESS;Database=_activity;Integrated Security=true");
manager.CommitChanges();
}
我得到的是:异常详细信息:System.Runtime.InteropServices.COMException:无效的索引。(来自HRESULT的异常:0x80070585)。
以下行是例外:
directoryBrowseSection.SetAttributeValue("DefaultConnection", ".\\SQLEXPRESS;Database=_usr;Integrated Security=true");
我的问题(尚不清楚)是如何使用Microsoft.web.administration在IIS上安装的网站上配置连接字符串?
鉴于缺乏答案,而且我找不到使用microsoft.web.administration的方法的事实,我求助于从其物理路径中读取Web.config。这样,我可以按以下方式配置所需的任何元素:
string[] file = Directory.GetFiles(myWebsite.physicalPath, "*config");
if (file != null)
{
XmlDocument doc = new XmlDocument();
doc.Load(file[1]);
XmlNodeList configurationStrings = doc.SelectNodes("/configuration/connectionStrings/add");
configurationStrings[0].Attributes["connectionString"].Value = ".\\SQLEXPRESS;Database=_usr;Integrated Security=true";
configurationStrings[1].Attributes["connectionString"].Value = ".\\SQLEXPRESS;Database=_main;Integrated Security=true";
configurationStrings[2].Attributes["connectionString"].Value = ".\\SQLEXPRESS;Database=_activity;Integrated Security=true";
doc.Save(file[1]);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句