C# ConnectionString或AppSettings的存储库

C# ConnectionString或AppSettings的存储库,c#,asp.net,asp.net-mvc,redis,C#,Asp.net,Asp.net Mvc,Redis,想知道是否有人使用数据库作为连接字符串或应用程序设置的存储库,可用于跨多个不同服务器的多个web应用程序 我们所有的web api应用程序都有到日志数据库和跟踪数据库的连接字符串,我知道在未来6个月内,这些数据库将改变位置。在接下来的几个月里,我将对每个web.config设置进行重构,以指向该连接字符串(以及其他)的中央存储库 我尽量避免Machine.config,这就是为什么我在每个web.config中都有连接字符串 我们正在使用redis进行会话管理,我考虑使用一个数据库进行会话管理,

想知道是否有人使用数据库作为连接字符串或应用程序设置的存储库,可用于跨多个不同服务器的多个web应用程序

我们所有的web api应用程序都有到日志数据库和跟踪数据库的连接字符串,我知道在未来6个月内,这些数据库将改变位置。在接下来的几个月里,我将对每个web.config设置进行重构,以指向该连接字符串(以及其他)的中央存储库

我尽量避免Machine.config,这就是为什么我在每个web.config中都有连接字符串

我们正在使用redis进行会话管理,我考虑使用一个数据库进行会话管理,因为它最终是一个键值对。有人用过它吗

你们中的一些人是如何克服这个问题的


由于这被标记为过于宽泛,让我看看是否可以添加更多细节。我们有将近50个web服务,它们都在web.config中具有相同的连接字符串,并且位于多个不同的服务器上。我希望可以编辑这些服务以使用共享资源,这样当连接字符串更改时,我们只需要编辑单个资源,而不需要重新部署每个web服务和/或编辑每个web.config。我不喜欢使用machine.config。

虽然您可以完美地使用Redis或任何数据库来存储此类全局设置,但您可能需要的是一个构建脚本

如果你在.NET Word中,我想你知道什么是Team Foundation服务器,它也提供了Team Foundation Bug。

通常,您不会将这些设置硬编码为连接字符串,而是将它们作为自定义生成属性提供,用于替换文件中的某些占位符。您的文件如下所示:

<add name="myConnectionString" connectionString="server=%host%;database=%database%;uid=%user%;password=%password%;" />

替换占位符后,可以添加部署步骤,并使用FTP、WebDeploy或其他协议将整个应用程序部署到某台机器上

总之,即使在
web.config
中,如果根据部署不同硬编码配置可能不同,那么最好避免硬编码配置,并且可以使用构建脚本注入这些变量设置。也就是说,当您更改某些配置时,您可以在构建自定义属性中执行此操作,然后使用配置更改再次部署应用程序

本页应该是您进一步研究此方法的良好开端:


另外,请检查,这是托管在Azure中的TFS的一个变体。

虽然您非常正确,但我在部署我们的网站时会构建脚本,我不想在数据库更改时重新部署或编辑近50个web服务。我宁愿编辑一个位置,在某些缓存清除后,开始使用新数据库。@RodneyPannell,但使用WebDeploy,您只能同步修改过的文件。实际上只是web.config。或者,您可以将WinSCP与同步命令一起使用。单个构建可以执行这50个部署。为什么不呢?您只需执行一次,只需单击一个按钮即可将构建排队!