C# web配置中动态更改和切换connectionString的问题
我试图在运行时为web应用程序切换不同的数据库 Senario 我们有一个asp.net web应用程序和不同客户的不同数据库。我正在尝试从一个公共数据库中切换特定的连接字符串值,在该数据库中我保留了连接字符串的映射表,特定的客户id和密码。成功登录后,我将从公共数据库中创建一个连接字符串,并通过在运行时替换选定的连接字符串来编辑web.config文件连接字符串部分。 我通过向登录事件添加以下代码来完成此操作C# web配置中动态更改和切换connectionString的问题,c#,asp.net,web-applications,web-config,page-lifecycle,C#,Asp.net,Web Applications,Web Config,Page Lifecycle,我试图在运行时为web应用程序切换不同的数据库 Senario 我们有一个asp.net web应用程序和不同客户的不同数据库。我正在尝试从一个公共数据库中切换特定的连接字符串值,在该数据库中我保留了连接字符串的映射表,特定的客户id和密码。成功登录后,我将从公共数据库中创建一个连接字符串,并通过在运行时替换选定的连接字符串来编辑web.config文件连接字符串部分。 我通过向登录事件添加以下代码来完成此操作 conectionString = cString;
conectionString = cString;
Configuration openWebConfiguration = WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection sections = openWebConfiguration.GetSection("connectionStrings") as ConnectionStringsSection;
if (sections != null)
{
sections.ConnectionStrings["ConnectionStringName"].ConnectionString = conectionString;
ConfigurationManager.RefreshSection("ConnectionStringName");
openWebConfiguration.Save();
}
我正在使用ConfigurationManager
读取页面上的上述连接字符串。问题是web配置文件正在更改,但在使用响应调用另一个页面后。重定向
将引发异常。异常为“无法计算表达式,因为代码已优化或调用堆栈顶部有本机框架”“我意识到这是在跨线程环境中发生的。我的问题是
- 上述异常的确切原因是什么
- Asp.net的哪个页面生命周期从web配置文件读取设置
- 实现上述场景的正确方法是什么
以上答案的任何新论据都是非常有价值的。我需要其他开发人员的更正,因为我非常渴望学习。不要不断更改web.config文件,因为它会不断触发重新编译并撕毁应用程序域。我不知道为什么要像现在这样布置它,但如果必须的话,请打开一个连接使用公共数据库的返回值。@RubbleFord-Ya您是正确的。您能告诉我实现上述场景的好方法是什么吗?