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

C# 在Azure上配置关联的WCF Web角色IP,c#,asp.net,.net,azure,azure-web-roles,C#,Asp.net,.net,Azure,Azure Web Roles,我有一个Azure项目,其中包含一个WCF服务Web角色和一个ASP.NET表单Web角色,我分别使用两个实例。ASP.NET表单web角色将通过在web.config中配置的tcp绑定通过标准服务引用定期调用WCF服务web角色,如下所示 <endpoint address="net.tcp://localhost:666/EventService.svc" behaviorConfiguration="DefaultBehaviour" binding="netTcpBindi

我有一个Azure项目,其中包含一个WCF服务Web角色和一个ASP.NET表单Web角色,我分别使用两个实例。ASP.NET表单web角色将通过在web.config中配置的tcp绑定通过标准服务引用定期调用WCF服务web角色,如下所示

<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引用?

由于WCF和ASP.Net的web角色不同,它们的url只会因端口号不同而不同,为什么要绑定到IP地址

对于这种变体,您可以通过创建部署配置(如
web.cloud.config
)来使用和定义生产部署的web.config条目


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

谢谢您的回答,但不幸的是,这是不正确的。在默认部署下,WCF服务web角色和ASP.NET表单web角色具有不同的IP地址。(虽然这可能是我做的某件事的结果)你不使用IP地址,但是像myservice.cloudapp.net:8080/wcfservice.svc这样的名称我觉得自己像个十足的白痴。我从未想过这会起作用,因为我只公开了一个私有端点,我只是假设它不会通过公共“域”可用。谈论将情况复杂化。非常感谢您…因此,在进一步测试之后,此解决方案实际上无法工作,正如之前所认为的,除非端点是公共的(在我的情况下,这不是一个选项),使用云服务域名无法解析为WCF服务,而端点是私有地址。您是对的,内部端点不对外公开,并在运行时获得分配的ip+端口。因此,您需要在运行时进行发现和绑定