我正在尝试在运行时为 Web 应用程序切换不同的数据库。
Senario 我们为不同的客户提供了一个 asp.net Web 应用程序和不同的数据库。我正在尝试从一个公共数据库中切换特定的连接字符串值,在该数据库中我保留了一个连接字符串、特定客户 ID 和密码的映射表。成功后 lo gin 我正在从公共数据库中提取一个连接字符串,并通过在运行时替换选定的连接字符串来编辑 web.config 文件连接字符串部分。我通过将以下代码添加到登录事件来做到这一点
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
.problem 读取页面上的上述连接字符串是 Web 配置文件正在更改,但在调用另一个页面后使用Response.Redirect
将引发异常。异常是“无法评估表达式,因为代码已优化或本机框架已打开调用堆栈顶部“我可以意识到这是在跨线程环境中发生的事情。我的问题是
- 上述异常的确切原因是什么?
- Asp.net 的哪个页面生命周期从 web config 文件中读取设置?
- 我可以实现上述场景的正确方法是什么?