我有一个内部端点设置如下:
<InternalEndpoint name="TcpSvcEndpoint" protocol="tcp" port="20000" />
端点将由NetTcp WCF服务使用。如果我在计算模拟器中运行1个实例,配置工作正常。但是,如果计算模拟器中有2个或更多实例(Visual Studio调试Azure项目),则会将相同的端口分配给所有实例。这当然无法对所有服务(第一个实例除外)进行WCF NetTcp初始化,但预期异常“ IP端点上已经有一个监听器。请确保..... SocketException:每个套接字只能使用一次。 .... ”。
我的理解是模拟器会为每个实例增加端口。如果不是这样,那么在Visual Studio中调试时如何在计算模拟器上测试多个实例?
我不想将动态端口设置与“*”一起使用。
为了澄清,我正在访问RoleEnvironment以获取指定的端口。
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["TcpSvcEndpoint"].IPEndpoint.Port;
我正在使用Azure SDK 1.6。 (2011年11月版)。
答案 0 :(得分:1)
对于Windows Azure SDK 1.5及更高版本,多个实例具有不同的IP地址,但端点设置与端点设置中定义的端口相同,如this blog所述。
它们的工作方式是,如果您已经使用2个实例定义了端口10000的TCP端点,那么您将获得如下的实例IP地址:
因此,如果您必须在计算模拟器中测试服务的所有实例。您需要将IPAddress和端口组合起来测试应用程序。