我有一个包含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引用吗?
答案 0 :(得分:1)
由于您对WCF和ASP.Net有不同的Web角色,因此它们的URL只会因端口号而不同,您为什么要绑定到IP地址?
对于此类变体,您可以使用web.config transformation并通过创建web.cloud.config
等部署配置来定义生产部署的web.config条目。
更新:如果端点是内部的,则上述模型不适用。 IP随机生成,必须在运行时绑定。见post