每个环境的Azure web.config

时间:2011-01-19 11:38:50

标签: web-config azure

我在VS2010中有一个Azure项目(Azure 1.3)。有2个webroles,一个网页项目和一个WCF项目。在调试模式中,我希望Web项目使用web.config进行DEV环境,并且在发布时必须使用PROD的web.config。

这样做的最佳方式是什么?

目前,在使用带有转换XSLT的Web.Debug.config时,我遇到了问题。它似乎不适用于Azure ....

5 个答案:

答案 0 :(得分:10)

以不同的方式解决您的问题。想想web.config始终是静态的,在使用Azure时永远不会改变。您的ServiceConfiguration.cscfg会发生什么变化。

我们所做的是创建我们自己的配置提供程序,首先检查ServiceConfiguration.cscfg,然后如果设置/连接字符串不存在则返回到web.config。这允许我们在开发期间直接在IIS / WCF中运行服务器,然后在部署到Azure时具有不同的设置。在某些情况下,您必须使用web.config(是的,我在这里指的是WCF),在这种情况下,您必须编写代码并创建约定,而不是将所有内容存储在web.config中。我有一篇博文,其中展示了我在处理WIF (Windows Identity Foundation) and Azure.

时如何做到这一点的示例

答案 1 :(得分:3)

我同意Mose,这是一个很好的问题!

Visual Studio 2010包含针对此类问题的解决方案,即web.config转换。如果您查看您的Web角色,您会注意到它包含Web.Debug.config和Web.Release.config以及传统的web.config。这些文件用于在部署期间转换web.config。

规范示例是“我需要不同的数据库连接字符串进行开发和发布”,但它也适合您的情况。

Visual Web Developer Team发表了一篇精彩的博客文章,解释了如何使用此功能(不要理会MSDN文档,我知道它是如何工作的,但仍然不明白文档)。查看http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx

答案 2 :(得分:2)

我喜欢这个问题!

对于辅助角色,我通过在运行时检测环境并在具有自定义配置的新AppDomain中启动“应用程序”来解决此问题:

  • bot.cloud.config
  • bot.dev.config
  • bot.win.config

非常高效

我想对Web项目做同样的事情,因为使用Azure特定配置会遇到很多麻烦:

  • 两个配置都不在同一个地方,这在调试时非常耗时
  • 你必须学习一种编写标准的新方法
  • 有时候你会怀疑这个应用程序是否因为语法错误而错误地返回web.config

我仍在寻找正确的方法,like in this post

答案 3 :(得分:0)

另一种可能的解决方案是拥有两个CloudService项目,每个项目都有特定的ServiceConfiguration.cscfg(dev / prod)。使用Dev进行开发,但部署Prod。

答案 4 :(得分:0)

  

目前,我在使用Web.Debug.config时遇到问题   转换XSLT。它似乎不适用于Azure ....

这取决于您是想在本地计算机上还是在持续集成中使用它。

  • 对于 本地计算机 ,我尝试在此处回答:https://stackoverflow.com/a/9393533/182371
  • 对于 持续集成 ,它更容易。当您从指定Configuration属性值的命令行构建时,您的配置将被转换(无论在VS内部构建时它是什么)。因此,正确指定云和Web项目的构建配置将根据构建参数为您提供正确的输出。