asp.net中的web.config

时间:2010-07-29 12:51:32

标签: c# asp.net

我有更改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";            
    }

5 个答案:

答案 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。