Azure计算模拟器中的内部端口冲突

时间:2012-06-07 03:29:01

标签: c# azure port azure-compute-emulator

我有一个内部端点设置如下:

<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月版)。

1 个答案:

答案 0 :(得分:1)

对于Windows Azure SDK 1.5及更高版本,多个实例具有不同的IP地址,但端点设置与端点设置中定义的端口相同,如this blog所述。

它们的工作方式是,如果您已经使用2个实例定义了端口10000的TCP端点,那么您将获得如下的实例IP地址:

  • 实例#1 - 127.255.0.1:10000
  • 实例#2 - 127.255.0.2:10000

因此,如果您必须在计算模拟器中测试服务的所有实例。您需要将IPAddress和端口组合起来测试应用程序。