编程语言
首页 > 编程语言> > c# – 在Web Config中动态更改和切换connectionString的问题

c# – 在Web Config中动态更改和切换connectionString的问题

作者:互联网

我试图在运行时为Web应用程序切换不同的数据库.

塞纳里奥
我们有一个asp.net Web应用程序和不同客户的不同数据库.我试图从一个公共数据库切换特定的连接字符串值,我保留连接字符串,特定客户ID和密码的映射表.成功的login后我正在从公共数据库中获取连接字符串,并通过在运行时替换选定的连接字符串来编辑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读取页面上方的连接字符串.问题是Web配置文件正在更改,但在使用Response.Redirect调用另一个页面后将抛出异常.Exception是“无法评估表达式,因为代码已优化或者本机框架位于调用堆栈之上“我可以意识到这是在跨线程环境中发生的事情.我的问题是

>上述例外的确切原因是什么?
> Asp.net的哪个页面生命周期从Web配置文件中读取设置?
>我可以在上述方案中实施的正确方法是什么?

解决方法:

我想知道为什么这个问题似乎仍然没有答案.我已经找到了一些自我答案.这可能是错误的,但有些如何给我一些意义.我认为以下是我的知识水平可以接受的.

1)我不知道确切的原因,但这是因为代码在应用程序运行时被修改而发生的事情

2)基于我的搜索,当IIS服务器启动时,应用程序开始读取WEB Config文件.所以在WEB Config中要修改的值,需要重启IIS服务器将它们加载到内存中.我们可以修改连接字符串动态但仍然应用程序将在以前的连接字符串上运行.所以我们需要重新启动IIS以加载更新的连接字符串.

注意:修改现有连接字符串不同于向WEB配置添加新连接字符串.

3)我使用了一个公共数据库,其中我有几个数据库的不同连接字符串的认证详细信息.WeB配置有上面主数据库的连接字符串.如果用户提供他的认证详细信息,它将选择他的连接字符串并加载它作为新的连接字符串.因此剩余的进程将基于该连接字符串.

上述答案的任何新论据都非常值得注意.我需要其他开发人员的更正,因为我非常渴望学习.

标签:c,web-applications,asp-net,web-config,page-lifecycle
来源: https://codeday.me/bug/20190709/1414152.html