Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在2.NET应用程序之间共享连接字符串_C#_Web Config_Connection String - Fatal编程技术网

C# 在2.NET应用程序之间共享连接字符串

C# 在2.NET应用程序之间共享连接字符串,c#,web-config,connection-string,C#,Web Config,Connection String,假设我有一个ASP.NET网站运行其相应的web.config文件,其中包含一组用于数据库访问的连接字符串。我还有一个小助手控制台程序(部署到与web应用程序相同的文件夹中),用于执行维护任务和其他工作。此帮助程序与web应用程序共享一组dll,因此我必须为其保留一个单独的bla.exe.config文件,以便共享dll查找连接字符串等。 我希望能够使控制台应用程序使用web.config,而不是拥有自己的配置文件 到目前为止,我已经设法在运行时加载appSettings(使用,循环通过appS

假设我有一个ASP.NET网站运行其相应的web.config文件,其中包含一组用于数据库访问的连接字符串。我还有一个小助手控制台程序(部署到与web应用程序相同的文件夹中),用于执行维护任务和其他工作。此帮助程序与web应用程序共享一组dll,因此我必须为其保留一个单独的bla.exe.config文件,以便共享dll查找连接字符串等。 我希望能够使控制台应用程序使用web.config,而不是拥有自己的配置文件

到目前为止,我已经设法在运行时加载appSettings(使用,循环通过appSettings并将它们动态添加到集合中),但该成员显然是只读的,因此我无法将web.config的ConnectionString“注入”到其中


有什么想法吗?

就我个人而言,我只想编写一种方法,使两个应用程序都能找到相同的文件。我将使用类似于使用CommonApplicationData枚举的方法。您可能会考虑该文件,但一般不推荐。

您可以尝试使用连接字符串部分来引用外部文件。我还没试过,但像这样:

<connectionStrings configSource="..\connnectionstrings.config">

ConnectionString.config:

<connectionStrings>
  <add name="..." connectionString="Server=...;Database=..;" />
</connectionStrings>


更新:


上述方法不起作用。configSource元素不支持绝对路径或以“.”开头的相对路径我知道这是一个非常古老的问题,但是您可以考虑将连接字符串存储在共享类库的<代码> App.CONFIG<代码>中,并使用下面的SO答案中的方法来确保配置文件总是被复制到引用项目的bin文件夹中,作为<代码>共享.Proj.DLL.CONFIG。然后从引用项目的bin文件夹中读取
shared.project.dll.config
,以获取连接字符串


助手控制台程序是同一Visual Studio解决方案的一部分吗?如果是这样的话,你可以考虑用一个NoN脚本来构建你的配置文件。这个想法是有一个单独的配置文件来减少维护成本,并且防止配置文件中的差异造成的未来混乱。问题是,我必须将“connectionstrings.config”文件直接放在“bin”目录下,这很糟糕,但仍然可以接受。我会等着看是否有更好的解决方案出现,否则我会将此标记为已接受。