在web.config中动态更改connectionString

时间:2010-08-09 15:51:27

标签: c# asp.net connection-string

我的web.config中有以下内容

<connectionStrings>
   <add name="ActiveDirectoryConnection" connectionString="LDAP://ActiveDirectoryDomain1.com" providerName="System.Web.Security.ActiveDirectoryMembershipProvider"/>
</connectionStrings>

我需要在我的登录页面添加一个下拉框,允许用户将connectionString更改为其他字符串,例如“LDAP://ActiveDirectoryDomain2.com”

在C#代码后面如何更改connectionString值?

<小时/> 更多信息:

我遇到的问题是有4个其他web.config设置调用一个connectionString。例如:

<activeDirectorySecurityContextSettings connectionStringName="ActiveDirectoryConnection" defaultADUserName="ReportUser" defaultADPassword="password"/>  

谢谢!

4 个答案:

答案 0 :(得分:7)

如果用户能够更改设置的值,则web.config文件是存储设置的错误位置。

您应该在设置文件中签出用户范围内的值。

MSDN - Using Settings in C#

使用这样的设置时,在运行时更改值很简单:

Properties.Settings.Default.LdapConnectionString = "New Connection String";
Properties.Settings.Default.Save();

答案 1 :(得分:3)

  • 从程序内部修改* .config文件是个坏主意。
  • 网页修改网站根文件夹中的任何文件都是个坏主意。
  • 让权限设置允许网页修改网站根文件夹中的文件是个坏主意。

基本上,您需要忘记web.config,并构造代码以使用仅存在于内存中的连接字符串。

答案 2 :(得分:2)

var settings = ConfigurationManager.ConnectionStrings[ 0 ];

var fi = typeof( ConfigurationElement ).GetField( "_bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic );

fi.SetValue(settings, false);

settings.ConnectionString = "Data Source=Something";

答案 3 :(得分:0)

即使从应用程序内部修改web.config文件是个坏主意,您也可以尝试这样做:

System.Configuration.ConfigurationManager.AppSettings.Set("keyToBeReplaced", "newKeyValue");