在Azure上配置关联的WCF Web角色IP

时间:2013-07-30 23:48:32

标签: c# asp.net .net azure azure-web-roles

我有一个包含WCF服务Web角色和ASP.NET Forms Web角色的Azure项目,我使用每个实例2个实例。 ASP.NET Forms Web角色将通过标准服务引用定期调用WCF服务Web角色,方法是在Web.config中配置tcp绑定。

<endpoint address="net.tcp://localhost:666/EventService.svc"
    behaviorConfiguration="DefaultBehaviour" binding="netTcpBinding"
    bindingConfiguration="TCPBinding" contract="EventService.IEventService"
    name="EventService" />

我遇到的问题是,目前我无法在每次部署后手动编辑web.config文件时部署这些角色(因为这些角色部署的IP端点地址可能会发生变化)。

我考虑解决此问题的方法是拦截WebRole.OnStart()事件并使用RoleEnvironment.Roles["MyWCFServices"].Instances,然后直接通过Microsoft.Web.Administration.ServerManager修改Web.config文件以引用正确的WCF服务IP 。

然而,在我走这条路线之前,有人可以确认在Azure平台中的Web角色之间没有更简单的方法来实现IP引用吗?

1 个答案:

答案 0 :(得分:1)

由于您对WCF和ASP.Net有不同的Web角色,因此它们的URL只会因端口号而不同,您为什么要绑定到IP地址?

对于此类变体,您可以使用web.config transformation并通过创建web.cloud.config等部署配置来定义生产部署的web.config条目。

更新:如果端点是内部的,则上述模型不适用。 IP随机生成,必须在运行时绑定。见post