C# ASP.Net-对数据库和应用程序设置使用单独的配置文件
我有一个asp.net项目,它使用的是在几个不同的客户端服务器上使用的实体框架。这意味着每个连接字符串和应用程序设置都有不同的web.config。 这不是一个问题,但我最近更改了一些更改web.config文件的内容,我必须手动调整每个客户端的web.config文件,我还必须在更新中排除web.config文件,以确保它们自己的文件不会被覆盖 我想实现的是将这些设置存储在另一个配置文件中,项目可以拾取并使用该文件。可能在Globals应用程序上,启动程序会获取这些文件并将其导入/覆盖当前的web.config文件 基本上,我不想影响在整个项目中使用连接字符串和ConfigurationManager.AppSettings的当前代码,但我确实希望能够让每个客户端的web.config文件更新,并对某些设置使用单独的文件 注意:我没有直接发布到每台服务器的权限,因此我不能简单地为每台服务器编写不同的deploy web.config。我必须在本地发布文件,以zip格式存储,并在服务器上自动执行相应的下载和解压缩程序 编辑: 请说明这是否被认为是一个坏主意,但我的想法是在Global.asax Application_Start method中加入类似的内容:C# ASP.Net-对数据库和应用程序设置使用单独的配置文件,c#,asp.net,C#,Asp.net,我有一个asp.net项目,它使用的是在几个不同的客户端服务器上使用的实体框架。这意味着每个连接字符串和应用程序设置都有不同的web.config。 这不是一个问题,但我最近更改了一些更改web.config文件的内容,我必须手动调整每个客户端的web.config文件,我还必须在更新中排除web.config文件,以确保它们自己的文件不会被覆盖 我想实现的是将这些设置存储在另一个配置文件中,项目可以拾取并使用该文件。可能在Globals应用程序上,启动程序会获取这些文件并将其导入/覆盖当前的w
希望在几周后,在我要求所有客户端执行手动更新后,他们将获得此代码,并且我可以开始在更新中包含web.config。在VS中,在“构建”菜单中,最后一项是Configuration Manager 在这里,您可以指定各种不同的发布环境,每个环境都有自己的web.config转换 这通常用于生产/暂存/测试环境。但是,我看不出为什么您不能使用它,并且为每个服务器/环境都有一个配置文件 然后,您需要为每个环境创建转换,方法是右键单击web.config,然后选择AddConfigTransform 然后,您安装的每个环境都可以覆盖主web.config中的设置。(现在用作模板/默认设置) e、 g。 在Web.EnvironmentA.Config中
<add key="ConnectionString" value="ConStringA" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
在Web.EnvironmentB.Config中
<add key="ConnectionString" value="ConStringB" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
然后在发布时,只需设置要使用的配置文件。如果您使用Azure或VS publish方法,它将保存这些设置中的每一个,这样您就可以轻松地推送到相关环境
在开始到处发布之前,请确保您首先按照您的意图对其进行测试;) 没有什么强迫你使用web.config来存储设置,这只是一种方便。将它放在另一个文件、数据库、注册表中,从web服务等获取它。您可以使用
文件和/或configSource
属性将其拆分为一个主web.config文件和其他.config文件,每个客户端都有不同的文件。尽管connectionstring的名称与dbcontext的名称相同,但请参见With EF,并且此链接非常完美。我不想丢失此链接或应用程序设置。这些可以被项目覆盖吗?@DanielJ.G。那就行了。但问题是,它需要对web.config进行更改,因此再次手动更改以及这些配置文件需要从更新中排除,以便不会覆盖客户端文件。我的目标是在不中断客户端的情况下更改此设置。对问题进行了编辑请参见问题最后一段中的注释,无法直接发布。另外,如果你想象30多个客户,那么这样做是没有意义的。啊,我错过了那个编辑。嗯,这种部署机制很糟糕!!我想一想……你是说我的还是你建议的那个?哈,它们不兼容,我就这么说吧!哪一个更糟糕是个人意见。。。