[英]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.