如何有条件地返回web.config条目。 I.E:如果web.config文件夹是'C:\ inetpub \ www \ myTestSite',则返回'connectionString'TestDB 否则返回'ProdDB'
答案 0 :(得分:3)
您可以尝试这样的事情:
string conn;
if (Server.MapPath("~/web.config").StartsWith(@"C:\inetpub\www\myTestSite"))
conn = ConfigurationManager.ConnectionStrings["TestDB"].ConnectionString;
else
conn = ConfigurationManager.ConnectionStrings["ProdDB"].ConnectionString;
虽然我建议采用不同的方法,可以为站点使用单独的配置文件,也可以使用更复杂的方法来测试代码所在的位置。我所做的是在我的开发机器的machine.config文件中放置一个appSettings键,以及我的测试和生产Web服务器,以便我的应用程序知道它正在运行的环境。我使用该appSetting的值来确定要使用的连接字符串。
答案 1 :(得分:2)
为不同的环境使用不同的配置文件要好得多。
您可以在web.config文件中包含以下内容:
<connectionStrings configSource="SiteSettings\connectionStrings.config"/>
其中configSource是相对于web.config文件路径的路径。然后,您可以在项目中轻松创建4个不同的connectionStrings.config文件: connectionStrings.config.dev , connectionStrings.config.test , connectionStrings.config.staging < / strong>, connectionStrings.config.prod 。通过该设置,您可以配置构建过程以自动为正确的环境选择正确的connectionStrings.config文件。这样维护就容易多了。
ScottGu有article描述此方法。还有一篇关于Customizing web.config for different environments的文章,你可能会觉得有帮助。