【问题标题】:Internal Port Colliding in Azure Compute EmulatorAzure Compute Emulator 中的内部端口冲突
【发布时间】:2012-06-07 03:29:00
【问题描述】:

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

<InternalEndpoint name="TcpSvcEndpoint" protocol="tcp" port="20000" />

端点将由 NetTcp WCF 服务使用。如果我在计算模拟器中运行 1 个实例,则配置工作正常。但是在计算模拟器中有 2 个或更多实例(Visual Studio 调试 Azure 项目),相同的端口被分配给所有实例。这当然会导致所有服务(第一个实例除外)的 WCF NetTcp 初始化失败,并出现预期异常“IP 端点上已经有一个侦听器。确保..... SocketException: Only one usage of each socket 。 ....”。

我的理解是模拟器会为每个实例增加端口。如果不是这样,在 Visual Studio 中调试时如何在计算模拟器上测试多个实例?

我不想使用带有“*”的动态端口设置。

为了澄清,我正在访问 RoleEnvironment 以获取分配的端口。

RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["TcpSvcEndpoint"].IPEndpoint.Port;

我正在使用 Azure SDK 1.6。 (2011 年 11 月版)。

【问题讨论】:

  • 您能否澄清一下您是简单地使用端口 20000 进行 wcf 初始化,还是调用 RoleEnvironment.CurrentInstance.InstanceEndpoints["TcpSvcEndpoint"].IPEndpoint.Port
  • 我正在调用 RoleEnvironment.CurrentInstance.InstanceEndpoint[...]...Port。我没有硬编码任何端口。端口号来自计算模拟器的 RoleEnvironment 实例。

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


【解决方案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 和 Port 来测试应用程序。

【讨论】:

    猜你喜欢
    • 2018-05-26
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多