2017-03-16 3 views
0

Ich bin in der Lage, den ServiceHost auf einem WcfCommunicationListener von this post anzupassen, die ich neulich übermittelte. Ich bekomme jetzt jedoch ein merkwürdiges Verhalten von Service Fabric, wenn ich mehrere WCF-Endpunkte in einem zustandslosen Dienst hostet.WCF-Endpunkte Verfügbarmachen mehrerer Verträge in Service Fabric

ich mehrere Zuhörer auf die ServiceInstanceListner Array bin Zuordnung: enter image description here

Ich bin sicher, dass sie jeweils einen eindeutigen Namen, sowie einzigartige Verträge und individuelle Endpunkte und Pfade.

Wann ServiceFabric entfaltet sie beide zeigen, wie enpoints auf diesen Dienst erwartet:

enter image description here

Und wenn ich meine WcfTestClient Feuer und rufen Sie eine der Endpunkte bekomme ich die Methoden zurück, wie erwartet:

enter image description here

Doch sobald ich den anderen Dienst rufen die Fremdheit beginnt, kann ich beide Verträge sehen auf dem gleichen Endpunkt ausgesetzt:

enter image description here

Aufruf des anfänglichen Endpunkt ein zweites Mal liefert ähnliche Ergebnisse:

enter image description here

Wenn ich Service Referenzen aus einem Visual Studio-Projekt das gleiche Problem tritt hinzuzufügen. Ich habe dies auch auf einen Cluster in Azure verschoben, um sicherzustellen, dass es sich nicht um ein lokales Problem handelt.

Ich habe meinen Code hunderte Male durchgekämmt, um sicherzustellen, dass weder Listener/Servicehost irgendwelche Verträge, Endpunkte oder andere Implementierungsdetails mit dem anderen teilt, so dass ich nicht weiß, wie man diese isoliert hält.

Ich habe sehr ähnlichen Code, den ich aus einem Cloud Services-Projekt migrieren und habe noch nie zuvor gesehen, wenn Sie in dieser Plattform arbeiten. Irgendwelche Ideen, wie Sie die Endpunkt-Isolation sicherstellen können? Ich habe versucht, separate Ports nutzlos zu verwenden und bin ratlos.

Ich habe bemerkt, in der Konfigurationsdatei von WcfTestClient erzeugt, dass ich beide netTcpBindings auf jeden Dienst vertreten - aber ich kann nicht sagen, ob dies ein Symptom oder eine Ursache:

enter image description here

Antwort

0

Ich habe versucht, Repro Dieses Problem, aber es hat wie erwartet funktioniert. Ich habe die Probe hier hochgeladen https://github.com/suchiagicha/Samples

Sie könnten uns dann sagen, wenn Sie etwas anderes machen.

+0

Danke, ich werde das morgen versuchen und Sie wissen lassen, ob es funktioniert und wenn ja, wird es mit meiner Lösung vergleichen und meine Ergebnisse veröffentlichen. – CodeAbundance

+0

Vielen Dank, Ihre Probe hat wie erwartet funktioniert und ich konnte Ihr Rezept für die Endpunkt-Erstellung in meine Lösung implementieren und es funktioniert jetzt wie erwartet. Ich bin mir nicht 100% ig sicher, warum mein Code nicht funktioniert hat - aber ich habe bemerkt, dass Ihre Methode erfordert, dass die Metadatenaustausch-Endpunkte sich auf einem anderen Port als der Listener befinden (andernfalls verursacht dies eine Ausnahme auf Service Fabric). Das hat vielleicht den Unterschied gemacht. – CodeAbundance