使用外部配置文件时,Web.config connectionString转换不起作用

时间:2016-02-09 14:27:17

标签: asp.net web.config-transform

好的,我正在为连接字符串使用外部配置文件,因此每个开发人员在开发时都可以拥有自己的字符串。通常,每个开发人员都有不同的环境,但我们都通过web.release.config转换发布到相同的服务器。

然而,当我从VS发布时,它并没有从conn字符串的web.release.config转换。我认为这是因为如果您将configSource属性设置为使用外部配置,则会忽略转换。

这是我的web.config:

<connectionStrings configSource="userConn.config" /> 

这是我的userConn.config

<?xml version="1.0"?>
<connectionStrings>  
<add name="DefaultConnection" 
   providerName="System.Data.SqlClient"   
   connectionString="Data Source=XXXX;Initial Catalog=XXXX;user id=XXXX;password=XXXX;" />  
<add name="ExtVariablesEntities"
   providerName="System.Data.EntityClient" connectionString="metadata=res://*/Models.XXXX.csdl|res://*/Models.XXXX.ssdl|res://*/Models.ExtVariables.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=XXXX;initial catalog=XXXX;user id=XXXX;password=XXXX;MultipleActiveResultSets=True;App=EntityFramework;&quot;" />
</connectionStrings>

发布后,打开实际的web.config进入服务器,它仍然有:

<connectionStrings configSource="userConn.config" />

有解决方法吗?在我不记得诀窍之前,我已经有了这个设置。

1 个答案:

答案 0 :(得分:0)

仅供参考,我可以按照以下文章解决此问题:https://jshowers.com/simple-web-config-transforms-for-configuration-elements-that-use-configsource-and-external-files/

最终您将获得3个自定义配置文件-不管怎么说,您可以称它们为dev,test和prod。然后,您将拥有3个Web配置文件dev,test和prod(这些是您的Web配置转换文件),您只需说:

<appSettings xdt:Transform="Replace" configSource="path.to.custom.config.file.depending.on.env">