gpt4 book ai didi

c# - 从另一个文件加载数据库连接字符串

转载 作者:行者123 更新时间:2023-11-30 17:47:28 26 4
gpt4 key购买 nike

我有一个包含 Web.config 文件的 Web 应用程序,但我需要它从位于定义位置(不是我的设计!)的另一个配置文件加载多个部分。这些部分之一是 connectionStrings。我尝试了以下方法,但是当我的 Web 服务加载时出现错误,提示 System.InvalidOperationException:在应用程序配置文件中找不到名为“MyDataModel”的连接字符串。

ConfigurationFileMap map = new ConfigurationFileMap(@"C:\conf1.conf");
config = ConfigurationManager.OpenMappedMachineConfiguration(map);

ConfigurationManager.RefreshSection("connectionStrings");

这是我的配置文件的相关部分:

    <configSections>
<section name="connectionStrings" type="System.Configuration.ConnectionStringsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" requirePermission="false"/>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="MyDataModel" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;
..."/>
</connectionStrings>

我知道我可以在另一个配置文件中“包含”一个配置文件片段,但这在这里不起作用,因为要包含的文件包含其他几个部分。有没有办法让运行时正确加载我的外部配置文件?谢谢!

最佳答案

使用 ConfigurationManager 读取映射配置,您走在了正确的轨道上。接下来是您必须在需要时手动获取 key 。这是一个非常相似的问题,答案是手动阅读你想要的东西:

Equivalent to 'app.config' for a library (DLL)

从上面的链接复制:

string GetAppSetting(Configuration config, string key)
{
KeyValueConfigurationElement element = config.AppSettings.Settings[key];
if (element != null)
{
string value = element.Value;
if (!string.IsNullOrEmpty(value))
return value;
}
return string.Empty;
}

编辑:

由于 EF 仅查看您的本地配置 (AFAIK),使用 T4 模板生成您的 web.config 怎么样?然后,您可以通过管道从远程配置文件中输入必要的数据。我找到了一篇关于如何执行此操作的好文章:

http://www.geoffhudik.com/tech/2010/10/19/webconfig-automation-with-t4-and-a-macro.html

编辑2:

在您的 EF 连接字符串中使用元数据是一个选项吗?如果是这样,您可以将它指向另一个程序集,而不必弄乱 ConfigurationManager:

http://msdn.microsoft.com/en-us/library/vstudio/cc716756(v=vs.100).aspx

关于c# - 从另一个文件加载数据库连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24742180/

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