允许ASP.NET应用程序知道它运行在哪个环境的建议方式是什么?我的应用程序可以在这些环境中运行:如何配置ASP.NET应用程序的环境?
- 内的Visual Studio调试
- 一个自动化系统测试
- 部署一个临时服务器上
- 部署在生产服务器上
在每这些环境应用程序需要一些不同的配置。环境之间的主要区别是使用哪个数据库连接设置,但也有其他差异。
这是我曾尝试:
- 我一直在使用Visual Studio中的“配置”选项尝试。默认情况下有两个:发布和调试。我试图用我的四种环境中的标识替换这两个。然后可以使用这些配置将转换应用于Web.config文件。这里的问题是选择配置发生在构建时间,我想编译我的应用程序,然后在运行在Web服务器上之前选择环境。在Visual Studio内部进行调试时,Web.config转换也不会发生,所以不会告诉应用程序它在调试环境中运行,它不会得到任何环境。我在Use Visual Studio web.config transform for debugging找到了一个解决方法,但它似乎不能很好地工作。我必须更改项目属性中的配置,这是一个缓慢的过程。
- 我试过使用环境变量。这样,我可以从应用程序外部设置变量MYAPP_ENV = dev,并且我可以在C#中将其读取为
string env = System.Environment.GetEnvironmentVariable(“MYAPP_ENV”);
但是我不知道如何从Visual Studio和IIS内部设置这个环境变量。我无法在机器上进行全局设置,因为同一台机器需要能够在多个环境中运行应用程序。
那么,在ASP.NET中如何推荐这样做呢?在Ruby on Rails中,我将使用RAILS_ENV环境变量,并且在PHP中,我将包含一个文件,该文件未检入存储库并添加到版本控制系统的忽略列表中。
,如果你这样做,但我会尝试使用,以避免目前尚不清楚,访问这些值编写特定于环境的代码(例如'if env ==“dev”{else else {}',因为这样你的网站在不同的环境中的行为就会有所不同,任何需要改变的值都应该在配置文件中进行修改(参见AaronS答案) – Jeff 2012-01-05 15:15:51