好的,我正在为连接字符串使用外部配置文件,因此每个开发人员在开发时都可以拥有自己的字符串。通常,每个开发人员都有不同的环境,但我们都通过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="data source=XXXX;initial catalog=XXXX;user id=XXXX;password=XXXX;MultipleActiveResultSets=True;App=EntityFramework;"" />
</connectionStrings>
发布后,打开实际的web.config进入服务器,它仍然有:
<connectionStrings configSource="userConn.config" />
有解决方法吗?在我不记得诀窍之前,我已经有了这个设置。
答案 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">