3

有人可以发布使用 InstanceInput 端点的示例代码吗?我在工作角色中使用了以下配置,其中示例 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。我在这里错过了什么吗?

4

2 回答 2

0

是一个示例 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 服务。

于 2012-06-27T11:26:20.467 回答
0

InstanceInput 端点不在本地工作,但一旦部署它就可以正常工作并为每个实例分配不同的端口,根据允许创建实例的端口范围,您不能创建超过配置中指定端口范围的实例。例如,端口范围是 101 - 105 你只能创建 5 个实例

于 2019-12-04T08:04:41.730 回答