假设我的ASP.NET网站运行时带有相应的web.config文件,该文件包含一堆用于数据库访问的连接字符串。我还有一个辅助控制台程序(部署到与Web应用程序相同的文件夹),它执行维护任务和其他东西。这个帮助程序与Web应用程序共享一堆dll,所以我必须为它保留一个单独的bla.exe.config文件,以便共享dll找到连接字符串等。 我希望能够使控制台应用程序使用web.config而不是拥有自己的配置文件。
到目前为止,我已设法在运行时加载appSettings(使用ConfigurationManager.OpenMappedExeConfiguration,循环访问appsettingts并将其动态添加到ConfigurationManager.AppSettings集合),但ConfigurationManager.ConnectionStrings成员是显然只读,所以我无法将web.config的连接线“注入”它。
有什么想法吗?
答案 0 :(得分:1)
就个人而言,我只是编程一种方式,以便两个应用程序都可以找到相同的文件。我会使用CommonApplicationData枚举来使用Environment.SpecialFolder之类的东西。您可能会考虑machine.config文件,但通常不建议这样做。
答案 1 :(得分:1)
您可以尝试使用connectionStrings部分的configSource attribute来引用外部文件。我没试过,但是这样的话:
<connectionStrings configSource="..\connnectionstrings.config">
connectionstrings.config:
<connectionStrings>
<add name="..." connectionString="Server=...;Database=..;" />
</connectionStrings>
<强> 更新 强>
上面显示的方法不起作用。 configSource元素不支持绝对路径,也不支持以“.. \”开头的相对路径。
答案 2 :(得分:0)
我知道这是一个非常老的问题,但是您可以考虑将连接字符串存储在共享类库的pending
中,并使用下面的SO回答中的方法来确保始终将配置文件复制到引用项目的bin文件夹为app.config
。然后,您只需从引用项目的bin文件夹中读取shared.project.dll.config
即可获得连接字符串。