hallo wissende,
ich beschäftige mich seit kurzen mit WCF und hab da mal ne grundsätztliche frage ... kann es sein das streaming und callbacks zusammen nicht möglich sind??
ich hab mir mal eine anwendung gebastelt wo client und server daten austauschen und halt irgendwas machen. funktioniert soweit sehr gut, auch die callbacks vom server auf den entsprechenden client.
nun wollte ich dateien vom server auf den client runterladen. dazu benutze ich stream, so in der art:
[OperationContract]
public System.IO.Stream getFile(MyObject object)
soweit ich weiß muss man dann TransferMode auf Streamed ändern. wenn ich das tue kann ich den server nicht mehr starten denn dann bekomme ich eine exception:
InvalidOperationException
Der Vertrag erfordert "Duplex", die Bindung NetTcpBinding unterstützt dies jedoch nicht, oder die Unterstützung wurde nicht ordnungsgemäß konfiguriert.
Auch wenn ich den TransferMode in StreamedRequest oder StreamedRespond ändere bringt das nichts.
Wie muss ich denn die Bindung konfigurieren das, daß funktioniert bzw. geht den Callback und Streaming überhaupt?? Kennt jemand ein HowTo zu dem Thema??
bin für jeden Tipp
dankbar
grüße elur
Lass ihn nur benachrichtigten das neue Daten da sind.
Der Client fragt die Daten über einen Stream ab. Der Vorteil das du dann als Client noch entscheiden kannst ob du die Daten überhaupt möchtest.
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein
Lass ihn nur benachrichtigten das neue Daten da sind. das läuft dann über einen callback, oder was meinst du?
... und das ist ja meine problem (denke ich) wenn ich in der app.config das streaming aktiviere dann kann ich im contract den callback-contract nicht mehr angeben ohne das er mir die obige exception wirft ... streaming ohne callback funktioniert, umgekehrt genauso.
stell ich vieleicht irgendetwas in der app.config falsch ein??
danke
elur
Der Callback sagt nur, es gibt einen neuen Stream zum Abrufen, z.B. eine GUID. Du machst dann über den normalen sagt getStreamFromGuid(GUID streamID) und fragst die Daten ab.
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein