在多个.NET应用程序中引用相同的连接字符

Gri*_*zly 8 .net c# security connection-string

我不确定这是否是这个问题的正确媒介,所以如果不是,请通知我,我会纠正.

作为一个例子来说明我的观点,假设我有30个.NET应用程序发布到2-3个不同的Web服务器.现在,这些应用程序都是基于Intranet的,所以我有一个C#库,我在每个应用程序中都会引用它.该库由我在每个应用程序中使用的方法组成,以便在必要时查找员工信息.现在,库有一个连接字符串,但是我必须在所有30个应用程序中引用相同的连接字符串...所以如果数据库更改了库引用,那么我必须记住所有30个应用程序并更改他们每个人都是单独的

有没有办法将连接字符串放在某种文件(文本文件或其他东西)中,并让30个应用程序中的每个应用程序中的每个web.config引用该特定文件,因此如果需要更改连接字符串,可以只在文件中更改它然后所有30个应用程序仍然可以,或者是不是那样的东西?

UPDATE

好的,我现在知道如何引用文本文件以用于连接字符串.. 但是,似乎我只能执行两个选项之一...在web.config中单独引用我的主连接字符串和库连接字符串像这样:

选项一

<connectionStrings>
  <add name="PrimaryCS" // more data />
  <add name="LibraryCS" // more data />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

这个选项要求我更改LibraryCS30个应用程序中每个应用程序中的连接字符串(如果它曾被更改)(不是我想要的)

选项二

<connectionStrings configSource="MyConfig.config"></connectionStrings>
Run Code Online (Sandbox Code Playgroud)

这个选项强制我将两个连接字符串放在MyConfig.config文件中,而不仅仅是LibraryCS文件..所以这将导致我必须更改30个应用程序LibraryCS中每个MyConfig.config文件的每个文件中的连接字符串(再次,不是我想要的).

我在寻找什么

我正在寻找两种选择的混合物,但似乎无法做到这一点,所以我希望这个媒体上有人知道一个解决方法

<connectionStrings configSource="MyConfig.config">
  <add name="PrimaryCS" // more data />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

我希望MyConfig.config文件只保存LibraryCS连接字符串,然后让主PrimaryCS连接字符串分开..这样如果LibraryCS连接字符串需要更改,那么我只需要在一个地方进行.

小智 6

微软有一个很棒的文档.希望这会有所帮助.

要在外部配置文件中存储连接字符串,请创建一个仅包含connectionStrings部分的单独文件.不要包含任何其他元素,部分或属性.此示例显示外部配置文件的语法.

<connectionStrings>  
  <add name="Name"   
   providerName="System.Data.ProviderName"   
   connectionString="Valid Connection String;" />  
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

在主应用程序配置文件中,使用configSource属性指定外部文件的完全限定名称和位置.此示例引用名为connections.config的外部配置文件.

<?xml version='1.0' encoding='utf-8'?>  
<configuration>  
    <connectionStrings configSource="connections.config"/>  
</configuration>
Run Code Online (Sandbox Code Playgroud)

资料来源:https: //docs.microsoft.com/en-us/dotnet/framework/data/adonet/connection-strings-and-configuration-files