我正在考虑将现有应用程序迁移到Azure。它将在一个Web角色中具有一个MVC应用程序,在另一个Web角色中具有一些WCF服务。启用后,该站点将位于http://www.myapp.com
上,服务将位于http://api.myapp.com
上,并且将MVC应用配置为指向http://api.myapp.com
上的服务。
问题是将应用程序推送到Azure上的“阶段”配置时。我的理解是,每次进入阶段都会使服务使用新的URL(诸如http://4aa5ae2071324585ba5a902f4242a98c.cloudapp.net/
之类的随机URL)运行。在这种情况下,我的MVC应用程序发现服务网址的最佳方法是什么?
一种选择是设置一个像http://stage.api.myapp.com
这样的dns条目,并在每次我上台时更新我的DNS CNAME记录,以指向新的Azure登台URL,但是。。。
另一个选择是推上台,获取服务的新URL,RDC到MVC角色的每个实例,并手动更新配置。还。
有没有简单的方法可以做到这一点?我知道我可以使用PowerShell之类的方法来自动执行上述某些步骤,但是我真的希望Azure框架中包含一些可以使此操作变得容易的事情。看来这将是一个标准方案。
最佳答案
动态发现登台URL的唯一方法是让实例检查其自己的DeploymentID。我在这里假设MVC网站和WCF服务在同一部署中。如果检查RoleEnvironment.DeploymentID,您会发现它与登台中使用的“随机” URL完全对应(即http://[deploymentID] .cloudapp.net)。
只要您在客户端上动态创建ChannelFactory,它就应该能够获取自己的DeploymentID并找到登台URL。
当然,这仅在分阶段部署时才有用。您为什么不简单地使用生产版位?该名称是稳定的,您可以依赖它或为其设置的CNAME(更有可能)。您始终可以拥有多个托管服务(dev,QA,prod等),而只需在其上使用生产插槽即可。
关于azure - Azure-在阶段动态发现服务Web角色URL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6719491/