Web.config 使用外部配置文件时 connectionString 转换不起作用
Web.config connectionString transforms not working when using an external config file
好的,我正在为我的连接字符串使用外部配置文件,这样每个开发人员在开发时都可以拥有自己的字符串。通常,每个开发人员都有不同的环境,但我们都通过 web.release.config
转换发布到相同的服务器。
但是,当我从 VS 发布时,它不会从 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" />
有解决办法吗?我以前有过这个设置,只是不记得这是什么技巧了。
仅供参考,我可以通过阅读这篇文章来解决此问题:https://jshowers.com/simple-web-config-transforms-for-configuration-elements-that-use-configsource-and-external-files/
你最终得到了 3 个自定义配置文件 - 无论你想为开发、测试和生产调用它们什么都可以。然后你将有 3 个网络配置文件 dev、test 和 prod(这些是你的网络配置转换文件),你只需说:
<appSettings xdt:Transform="Replace" configSource="path.to.custom.config.file.depending.on.env">
好的,我正在为我的连接字符串使用外部配置文件,这样每个开发人员在开发时都可以拥有自己的字符串。通常,每个开发人员都有不同的环境,但我们都通过 web.release.config
转换发布到相同的服务器。
但是,当我从 VS 发布时,它不会从 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" />
有解决办法吗?我以前有过这个设置,只是不记得这是什么技巧了。
仅供参考,我可以通过阅读这篇文章来解决此问题:https://jshowers.com/simple-web-config-transforms-for-configuration-elements-that-use-configsource-and-external-files/
你最终得到了 3 个自定义配置文件 - 无论你想为开发、测试和生产调用它们什么都可以。然后你将有 3 个网络配置文件 dev、test 和 prod(这些是你的网络配置转换文件),你只需说:
<appSettings xdt:Transform="Replace" configSource="path.to.custom.config.file.depending.on.env">