我的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"/>
谢谢!
答案 0 :(得分:7)
如果用户能够更改设置的值,则web.config文件是存储设置的错误位置。
您应该在设置文件中签出用户范围内的值。
使用这样的设置时,在运行时更改值很简单:
Properties.Settings.Default.LdapConnectionString = "New Connection String";
Properties.Settings.Default.Save();
答案 1 :(得分:3)
基本上,您需要忘记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");