c#从ASPX页面编辑和更新web.config文件

时间:2011-09-13 11:55:18

标签: c# asp.net iis web-config

我的web.config中有两个键,我需要在ASPX页面中进行编辑,键是..

<add key="atlasuser" value="username" />
<add key="atlaspass" value="password" />

我已经在我的ASPX页面背后的代码中写了这个

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
string u_user = txtUsername.Text;
string u_pass = txtPassword.Text;

string crmSID = Request.QueryString["SID"];

config.AppSettings.Settings["atlasuser"].Value = u_user;
config.AppSettings.Settings["atlaspass"].Value = u_pass;

config.Save(ConfigurationSaveMode.Full);

当我编辑字段并单击“保存”时,我收到一条解析错误消息,指出对.tmp文件的访问被拒绝,并且在源错误框中没有显示相关的源代码行。

我正在运行Windows 7,我已经检查过NETWORK SERVICE对该目录具有完全读写权限。

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:0)

这篇msdn文章似乎认为您将要定义一个空字符串来打开默认配置项。

http://msdn.microsoft.com/en-us/library/ms151456.aspx

如果你这样做:

Configuration config = WebConfigurationManager.OpenWebConfiguration(null);

这应该允许你打开配置来读/写,但正如其他人所说的那样,这不是存储此类信息的最佳位置

答案 1 :(得分:0)

检查配置文件是否设置为只读?

PS - 如果您在Web配置中存储临时信息,您的设计可能有问题。

答案 2 :(得分:0)

无法从ASP.NET应用程序编辑

web.config

理论 .NET Framework提供了api来编辑/保存应用程序配置文件(对于ASP.NET应用程序是web.config)的更改,但在IIS中实际上这不起作用因为每次更改web.config时都会重新启动IIS应用程序,因此.NET不允许您保存以防止这种情况发生。

如果您确实需要允许从ASPX页面更改配置,您应该保存在数据库或其他外部xml文件中,然后在需要时读取这些设置。

答案 3 :(得分:0)

您可以编辑web.config文件本身。只需确保您运行应用程序的帐户具有相应的文件系统权限,即可写入应用程序目录:

void editWebConfig(string key, string newValue, string filePath)
{
    var xml = new XmlDocument();
    xml.Load(filePath);
    using(FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite))
    {
        xml.SelectSingleNode("//configuration/appSettings/add[@key = '" + key + "']").Attributes["value"].Value = newValue;
        xml.Save(fs);
    }
}

然后你打电话

editWebConfig("atlasuser", txtUsername.Text, Server.MapPath(".") + "\\web.config");