c# – 在Web Config中动态更改和切换connectionString的问题
我试图在运行时为Web应用程序切换不同的数据库.
塞纳里奥 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配置文件正在更改,但在使用Response.Redirect调用另一个页面后将抛出异常.Exception是“无法评估表达式,因为代码已优化或者本机框架位于调用堆栈之上“我可以意识到这是在跨线程环境中发生的事情.我的问题是 >上述例外的确切原因是什么? 解决方法
我想知道为什么这个问题似乎仍然没有答案.我已经找到了一些自我答案.这可能是错误的,但有些如何给我一些意义.我认为以下是我的知识水平可以接受的.
1)我不知道确切的原因,但这是因为代码在应用程序运行时被修改而发生的事情 2)基于我的搜索,当IIS服务器启动时,应用程序开始读取WEB Config文件.所以在WEB Config中要修改的值,需要重启IIS服务器将它们加载到内存中.我们可以修改连接字符串动态但仍然应用程序将在以前的连接字符串上运行.所以我们需要重新启动IIS以加载更新的连接字符串. 注意:修改现有连接字符串不同于向WEB配置添加新连接字符串. 3)我使用了一个公共数据库,其中我有几个数据库的不同连接字符串的认证详细信息.WeB配置有上面主数据库的连接字符串.如果用户提供他的认证详细信息,它将选择他的连接字符串并加载它作为新的连接字符串.因此剩余的进程将基于该连接字符串. 上述答案的任何新论据都非常值得注意.我需要其他开发人员的更正,因为我非常渴望学习. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |