我在VS2010中有一个Azure项目(Azure 1.3)。有2个webroles,一个网页项目和一个WCF项目。在调试模式中,我希望Web项目使用web.config进行DEV环境,并且在发布时必须使用PROD的web.config。
这样做的最佳方式是什么?
目前,在使用带有转换XSLT的Web.Debug.config时,我遇到了问题。它似乎不适用于Azure ....
答案 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中启动“应用程序”来解决此问题:
非常高效!
我想对Web项目做同样的事情,因为使用Azure特定配置会遇到很多麻烦:
我仍在寻找正确的方法,like in this post
答案 3 :(得分:0)
另一种可能的解决方案是拥有两个CloudService项目,每个项目都有特定的ServiceConfiguration.cscfg(dev / prod)。使用Dev进行开发,但部署Prod。
答案 4 :(得分:0)
目前,我在使用Web.Debug.config时遇到问题 转换XSLT。它似乎不适用于Azure ....
这取决于您是想在本地计算机上还是在持续集成中使用它。