繁体   English   中英

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

[英]How to configure the environment of an ASP.NET application?

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

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

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

这是我尝试过的:

  • 我尝试在Visual Studio中使用“配置”选项。 默认情况下有两个:Release和Debug。 我试图用我的四个环境的标识符替换这两个。 然后,可以使用这些配置将转换应用于Web.config文件。 这里的问题是选择配置是在构建时发生的,我想编译我的应用程序,然后在Web服务器上运行之前选择环境。 在Visual Studio内部进行调试时也不会发生Web.config转换,因此它不会告诉应用程序它在调试环境中运行,而是没有环境。 我在Use Visual Studio web.config转换中找到了一个解决方法, 用于调试,但似乎效果不佳。 我必须更改项目属性中的配置,这是一个缓慢的过程。
  • 我尝试过使用环境变量。 这样我可以在应用程序外部设置变量MYAPP_ENV = dev,我可以在C#中读取它
    string env = System.Environment.GetEnvironmentVariable(“MYAPP_ENV”);
    但后来我不确定如何在Visual Studio和IIS中设置此环境变量。 我无法在机器上全局设置它,因为同一台机器需要能够在多个环境中运行应用程序。

那么,在ASP.NET中如何推荐这样做呢? 在Ruby on Rails中,我将使用RAILS_ENV环境变量,在PHP中,我将包含一个文件,该文件未检入存储库并添加到版本控制系统的忽略列表中。

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

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

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

<appSettings file="MySettings.config">

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

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

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

然后,您可以通过ConfigurationManager类访问这些值

var currentEnvironment = ConfigurationManager.AppSettings["Environment"].ToString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM