Azure InstanceInput端点使用情况

时间:2012-06-26 06:14:49

标签: azure

有人可以发布使用InstanceInput端点的示例代码吗? 我在worker角色中使用了以下配置,其中示例WCF服务侦听端口8080.

<Endpoints>
  <InstanceInputEndpoint name="InstanceAccess" protocol="tcp" localPort="8080">
    <AllocatePublicPortFrom>
      <FixedPortRange max="10105" min="10101" />
    </AllocatePublicPortFrom>
  </InstanceInputEndpoint>
</Endpoints>

但我无法使用任何端口10101到10105从外部使用者访问此WCF服务。我们是否应该使用Azure服务的公有DNS名称以及给定范围中的公共端口?

此外,我无法从辅助角色OnStart()方法中访问此端点详细信息。我使用了RoleEnvironment.CurrentRoleInstance.InstanceEndpoints [“InstanceAccess”]。但它不会返回RoleInstanceEndpoint。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:0)

Here是一个示例Visual Studio解决方案,它使用Azure InstanceInput端点并在辅助角色上托管WCF服务。可以使用Azure DNS名称和映射到该实例的公共端口访问在每个单个实例上运行的WCF服务。我使用了以下端点配置。

  <Endpoints>
      <InstanceInputEndpoint name="Endpoint1" protocol="tcp" localPort="10100">
        <AllocatePublicPortFrom>
          <FixedPortRange max="10110" min="10106" />
        </AllocatePublicPortFrom>
      </InstanceInputEndpoint>
    </Endpoints>

此端点无法从WorkerRole(OnStart()和Run()方法中)访问。所以我用'localhost'。

  string endpointIP = "localhost:10100";

  if (RoleEnvironment.CurrentRoleInstance.InstanceEndpoints.Keys.Contains("Endpoint1"))
  {
      IPEndPoint externalEndPoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint;
      endpointIP = externalEndPoint.ToString();
  }

该解决方案还包含一个控制台客户端,该客户端使用托管的DNS名称来调用这些单独的WCF服务。

答案 1 :(得分:0)

InstanceInput终结点不在本地运行,但是一旦部署便可以正常工作,并为每个实例分配了一个不同的端口,基于允许创建实例的端口范围,您创建的实例不能超过指定端口范围。组态。例如,端口范围是101-105,则只能创建5个实例

相关问题