gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:49:18 27 4
gpt4 key购买 nike

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

塞纳里奥我们有一个 asp.net web 应用程序和不同的数据库用于不同的客户。我正在尝试从一个公共(public)数据库切换特定的连接字符串值,我在该数据库中保留连接字符串、特定客户 ID 和密码的映射表。成功登录后我从公共(public)数据库中获取连接字符串,并通过在运行时替换选定的连接字符串来编辑 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 调用另一个页面后将抛出异常。异常是“无法评估表达式,因为代码已优化或 native 框架位于调用堆栈的顶部”我可以意识到这是在跨线程环境中发生的事情。我的问题是

  • 上述异常的确切原因是什么?
  • Asp.net 的哪个页面生命周期从 web 配置文件中读取设置?
  • 实现上述场景的正确方法是什么?

最佳答案

我想知道为什么这个问题似乎仍然没有答案。好吧,我自己找到了一些答案。这可能是错误的,但有些是如何给我一些意义的。我假设以下内容对我的知识水平来说是可以接受的。

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

2)根据我的搜索,当IIS服务器启动时,应用程序开始读取WEB Config文件。那么在WEB Config中要修改的任何值,都需要重新启动IIS服务器才能将它们加载到内存中。我们可以动态修改连接字符串,但应用程序仍将在以前的连接字符串上运行。因此我们需要重新启动 IIS 以加载更新的连接字符串。

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

3)我使用了一个公共(public)数据库,其中我有多个数据库的不同不同连接字符串的身份验证详细信息。Web 配置具有上述主数据库的连接字符串。如果用户提供他的身份验证详细信息,它将选择他的连接字符串并将其作为新的连接字符串加载。因此,剩余的过程将基于该连接字符串。

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

关于c# - Web Config 中动态更改和切换 connectionString 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11950969/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com