我有一个在SF中运行的容器。 WCF服务正在端口7777的容器内运行,并已绑定到同一端口上的主机。
我已经编写了第二个SF服务并将其部署在集群上。 我已经使用WCFComuunicationClientFactory与容器中运行的WCF服务进行通信。
但是,我在uri上收到类型为EndPointNotFoundException的异常: net.tcp://MyPc.XXX.com:7777 /。 这是有道理的,因为合同是以这种方式公开的:net.tcp://MyPc.XXX.com:7777 / ContractType。
我如何使其起作用? 我正在附上尝试与容器联系的服务代码:
var wcfClientFactory = new WcfCommunicationClientFactory<MyContractService>(
clientBinding: binding,
servicePartitionResolver: partitionResolver
);
var newClient = wcfClientFactory.GetClientAsync(
new Uri("fabric:/MyContainerService"),
ServicePartitionKey.Singleton,
TargetReplicaSelector.Default,
null,
new OperationRetrySettings(),
CancellationToken.None
).Result;
var x = newClient.Channel.GetX();
访问“ GetX”时,出现端点异常。
答案 0 :(得分:1)
解决方案位于服务结构serviceManifest.xml文件中的容器端点定义内。
可以添加pathSuffix,如下所示:
<Endpoint Name="MyEndPoint" UriScheme="net.tcp" Port="3000" Protocol="tcp" PathSuffix="YourService" />
这将导致以下终点:
net.tcp://<host>:3000/YourService
请注意,您可以拥有尽可能多的端点,并且为了从与容器内的服务联系的客户端中选择一个端点,在创建“ ServicePartitionClient”时应指定参数:“ listenerName”,它代表您的EndPoint名称。