如何配置ASP.NET应用程序的环境?

时间:2012-01-05 15:03:21

标签: c# asp.net .net web-config environment

允许ASP.NET应用程序知道它运行的环境的推荐方法是什么?我的应用程序可以在这些环境中运行:

  • 在Visual Studio中进行调试
  • 自动系统测试
  • 在临时服务器上部署
  • 在生产服务器上部署

在每个环境中,应用程序都需要一些不同的配置。环境之间的主要区别在于使用哪种数据库连接设置,但也存在其他差异。

这就是我的尝试:

  • 我尝试在Visual Studio中使用“配置”选项。默认情况下有两个:Release和Debug。我试图用我的四个环境的标识符替换这两个。然后,可以使用这些配置将转换应用于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中,我将包含一个文件,该文件未被检入存储库并被添加到版本控制系统的忽略列表中。

2 个答案:

答案 0 :(得分:3)

我会为每个环境分别提供web.config文件。

或者,您也可以通过添加外部配置文件来设置类似于PHP包含文件的设置。

只需将以下内容添加到您的web.config。

<appSettings file="MySettings.config">

然后添加一个名为MySettings.config的新文件,其中包含其余的配置信息。

答案 1 :(得分:1)

web.config文件用于环境配置。如果您发现可视化工作室中的配置过于繁琐,您可以将文件保留在版本控制之外,并针对每个环境进行编辑。在&lt; appSettings&gt;中您可以添加键的节点:

<appSettings>
    <add key="Environment" value="DEV" />   
</appSettings>

然后,您可以通过ConfigurationManager类

访问这些值
var currentEnvironment = ConfigurationManager.AppSettings["Environment"].ToString();