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:
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:
Und wenn ich meine WcfTestClient Feuer und rufen Sie eine der Endpunkte bekomme ich die Methoden zurück, wie erwartet:
Doch sobald ich den anderen Dienst rufen die Fremdheit beginnt, kann ich beide Verträge sehen auf dem gleichen Endpunkt ausgesetzt:
Aufruf des anfänglichen Endpunkt ein zweites Mal liefert ähnliche Ergebnisse:
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:
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
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