我有更改web.config中的值的功能 但我的问题是它没有正确地获取web.config的路径并抛出
“无法找到文件'C:\ Users \ maxnet25 \ Web.config'” 它在xmlDoc.Load()函数上给出了错误。
我的代码:
public void UpdateConfigKey(string strKey, string newValue)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(AppDomain.CurrentDomain.BaseDirectory + "..\\..\\Web.config");
if (!ConfigKeyExists(strKey))
{
throw new ArgumentNullException("Key", "<" + strKey + "> not find in the configuration.");
}
XmlNode appSettingsNode = xmlDoc.SelectSingleNode("configuration/appSettings");
foreach (XmlNode childNode in appSettingsNode)
{
if (childNode.Attributes["key"].Value == strKey)
childNode.Attributes["value"].Value = newValue;
}
xmlDoc.Save(AppDomain.CurrentDomain.BaseDirectory + "..\\..\\Web.config");
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
Label1 .Text ="Key Upated Successfullly";
}
答案 0 :(得分:4)
给出了什么错误消息?
无论哪种方式,你都不会以正确的方式修改web.config。您应该查看System.Configuration.ConfigurationManager
类,因为它以结构化方式提供对web.config文件的编程访问。请注意,要访问此类,您需要向项目添加对System.Configuration.dll的引用,以将ConfigurationManager
纳入范围。
如果您查看GetSection
method的示例代码,它会显示如何在.net配置文件的appSettings部分中创建/添加设置,因此该示例应足以让您到达目的地去。
如果您肯定想使用此方法来操作web.config文件,我怀疑:
AppDomain.CurrentDomain.BaseDirectory + "..\\..\\Web.config")
根据您在错误消息中显示的路径,不正确。尝试删除.. \ .. \并查看是否有效。 AppDomain.CurrentDomain.BaseDirectory
应指向您的web.config文件的位置而不进行修改。
答案 1 :(得分:2)
假设这确实是一个ASP.NET网站,而不是:
AppDomain.CurrentDomain.BaseDirectory + "..\\..\\Web.config"
使用此:
HttpContext.Current.Server.MapPath("~/Web.config")
另外请注意,无论何时对web.config进行更改,您的Web应用程序都会重新启动。您可能不需要担心这取决于您的网络应用程序的功能。
答案 2 :(得分:1)
尝试使用Server.MapPath()
来解析web.config的位置。如果您在某个页面中,则Server
是其中一个页面属性。如果没有,您可以在HttpContext.Current
中找到它。
作为一个例子......
HttpContext.Current.Server.MapPath("~/web.config")
...应返回Web应用程序顶部的web.config的物理路径。
现在,使用WebConfigurationManager
可能会好得多,如this post所示。该方法更清晰,但需要引用System.Configuration
。
答案 3 :(得分:0)
您是否已将web.config添加到您的网站?
答案 4 :(得分:0)
你应该使用:
System.Configuration.ConfigurationManager
表示app.config文件,或者:
System.Web.Configuration.WebConfigurationManager
用于web.config文件。
你实际上也可以将System.Configuration.ConfigurationManager与web.config文件一起使用,说实话,我真的不确定使用其中一个是否有任何好处。
但不管怎样,你不应该使用Xml名称空间并编写/修改原始XML。