有人可以发布使用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。我在这里错过了什么吗?
答案 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个实例