ASP.Net MVC 2中的多个环境

时间:2010-11-24 21:30:12

标签: .net asp.net-mvc-2 configuration development-environment production-environment

我正在学习ASP.Net MVC 2,来自PHP和一些Rails背景,对我而言,唯一可以解决的问题就是管理连接字符串或外部服务端点等配置设置。< / p>

使用PHP框架,我以前的公司使用的是配置文件的标准格式和约定。我的公司能够利用它来实现,以便根据环境变量(在Apache配置中设置)加载不同的配置文件。这使得根据环境更改任何配置设置非常简单和自动。据我所知,Rails内置了这个功能的一些版本。

我熟悉.Net世界的app.configweb.config文件,但是有没有办法根据环境进行这些更改,最好是自动更改,并且具有不同的粒度级别?与我以前相比,整个配置系统似乎非常贫乏。

我可能会共同破解一些事情来实现这一目标,但我想看看人们在实践中采取了什么方法,或者是否有人使用的标准工具。

4 个答案:

答案 0 :(得分:3)

web.config transformations

我可能错了,但我似乎记得如果只是在Visual Studio中使用“开始调试(F5)”按钮启动应用程序,它们将无法应用,使得该功能对于许多用途而言似乎不切实际

答案 1 :(得分:1)

答案 2 :(得分:0)

显然,您可以在“调试”与“发布”模式下运行您的环境。 Rails中的ENV变量和PHP中的类似约定显然是它们的优势之一。与任何选择一样,总是权衡,而其中一个。当我在轨道中时,我可以理解能够使用适当的宝石等加载ENV变量(test,dev,production ...)。这很棒。当我进入轨道时,VS intellisense之间也存在相当大的差异,可能是最好的。

那就是说,我见过的一些技巧已经将MachineName属性编码到适当的连接字符串之类,因此WebConfigs可以很容易地在不同的开发人员和服务器等之间传递......

答案 3 :(得分:0)

我个人使用machine.config来管理特定于环境的设置。此文件包含特定于计算机的设置。

如果您没有为每个环境使用专用计算机,而是在IIS中使用不同的网站,则可以在每个包含特定于环境的设置的网站的根目录下放置一个根we​​b.config文件。

基本上在这个全局配置文件中,我存储了包含我的SQL Server,Web服务器服务器的名称的键/值对,它们在不同的环境中变化,然后在我的应用程序中,我使用这些键来构造最终的连接字符串, http网址,......

完成这些全局配置设置后,您可以在所有环境中使用web.config部署完全相同的应用程序文件。