2 Stimmen

Wie WsDualHttpBinding tut, um über den Callback-Kanal wissen?

Etwas scheint sehr seltsam zu mir, ich habe versucht, in WCF mit Reflector zu schauen, aber verzeihen Sie mir, es ist zu schwer zu verstehen :(.

Wenn Client A einen Duplex-Dienst auf Server B mit wsDualHttpBinding aufrufen, dachte ich, dass Client A die Client-Basis-Adresse (die Adresse des Rückrufs) in der Kopfzeile der Anforderung wie folgt enthalten

<a:ReplyTo>http://client.foo/29293-3287-2387-3291</a:ReplyTo>

.

Aber OperationContext.Current.IncomingMessageHeaders.ReplyTo gibt null zurück...

Wie wsDualHttpBinding tut, um die Adresse des Client-Kanals ???? kennen

Gibt es eine schwarze Magie oder so etwas?

Lösung

Dies ist die zuverlässige Sitzung, die für den Transport der replyTo-Adresse verantwortlich ist. Wir können dies mit diesen Bindungselementen in einer customBinding überprüfen

<reliableSession/>
<compositeDuplex/>
<oneWay></oneWay>
<textMessageEncoding></textMessageEncoding>
<httpTransport/>

Entfernen Sie die reliableSession und Ihr Dienst hat nicht mehr den Rückrufkanal...

2voto

Brian Punkte 115257

Ich denke, diese Informationen werden beim Aufbau der Sitzung über Nachrichten weitergegeben. Wenn Sie ein Tool wie "fiddler" verwenden, um den gesamten http-Verkehr zu beobachten, werden Sie es vermutlich in einer Nachricht zum Sitzungsaufbau sehen. Keine Magie, der Client muss dem Server sagen, wo er zurückrufen soll.

0voto

flq Punkte 21455

Wenn ich mit Sockets arbeite, ist die Adresse des Anrufers ebenfalls verfügbar - ich vermute, daß das Wissen, an welche Adresse man antworten muß, ein ziemlich niedriges Merkmal der Netzwerkkommunikation ist...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X