簡體   English   中英

與Service Fabric中的容器化WCF服務進行通信

[英]Communicating with containerized WCF service in Service fabric

我有一個在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”時,出現端點異常。

該解決方案位於服務結構serviceManifest.xml文件中的容器端點定義內。

可以添加pathSuffix,如下所示:

<Endpoint Name="MyEndPoint" UriScheme="net.tcp" Port="3000" Protocol="tcp" PathSuffix="YourService" />

這將導致以下終點:

net.tcp://<host>:3000/YourService

請注意,您可以根據需要擁有盡可能多的端點,並且為了從與容器內的服務聯系的客戶端中選擇一個端點,在創建“ ServicePartitionClient”時應指定參數:“ listenerName”,該參數代表您的EndPoint名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM