2011-09-13 25 views
0

我在我的web.config两个键,我需要做供在ASPX页面中的键编辑..C#编辑和更新从ASPX页面web.config文件

<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具有完全读写权限的目录。

任何人都可以帮助我吗?

+0

请问您的IIS用户有这些必要的权限? –

+0

写入web.config mint重置会话,所有用户都必须重新登录。这应该在从Web本身更改配置文件时考虑,因为如果配置错误,您可能会或可能不会陷入不可用的站点 – Sascha

+0

web.config文件不是存储登录信息的好地方,请仔细阅读在会议,而不是,http://www.codeproject.com/KB/aspnet/ExploringSession.aspx – Olle89

回答

0

这MSDN文章似乎认为你将要定义一个空字符串,从而打开默认的配置项。

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

如果你这样做:

Configuration config = WebConfigurationManager.OpenWebConfiguration(null); 

这应该允许您打开config来读/写,但正如其他人说,这是不储存这类信息的最好的地方

0

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

PS - 有可能出错了你的设计,如果你是存储网络的配置临时信息。

1

web.config不能从ASP.NET应用程序编辑。

理论 .NET Framework提供了在应用程序配置文件(对于ASP.NET应用程序是web.config)中编辑/保存更改的API,但实际上在IIS中这不起作用,因为考虑每一个当web.config被更改时,IIS应用程序将重新启动,因此.NET不允许您保存以防止出现此问题。

,如果你真的需要允许从ASPX页面您应该保存在数据库或其他外部XML文件中的配置更改需要的时候再读取这些设置。

+2

我敢肯定,这是不正确的,至少.NET 4。我已经在过去,从aspx页面编辑web.config文件写入功能。 – ChrisPatrick

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");