Dynamische Zuweisung des JSON-Antwort-Inhaltstyps in WCF Azure Service Bus

9

Ich schreibe eine POC-Anwendung, die Microsoft.ServiceBus.dll 1.0.0.0 (die .NET 3.5-Version) verwendet.

Mein WCF Vertrag und Service sieht wie folgt aus:

%Vor%

Der Listening-Endpunkt ist für die Verwendung von WebHttpRelayBinding konfiguriert:

  • Sicherheitsmodus: Transport
  • Übertragungsmodus: Gestreamt

Wenn ich versuche, den ContentType der ausgehenden Antwort an "application / json" zuzuweisen, tritt kein Fehler auf, aber die aufrufende Anfrage kehrt mit dem Statuscode 504 (Gateway Timeout) zurück.

Wenn ich den ContentType in "text / javascript" ändere, kommt die aufrufende Anfrage mit 200 (OK) zurück.

Einige Dinge zu beachten:

  • Der Inhaltstyp ist bis zur Laufzeit nicht bekannt, daher muss er dynamisch zugewiesen werden.
  • Der Inhalt des Streams ist rein - 100% gültig - json.
  • Die Absicht, einen Stream zu akzeptieren und zurückzugeben, besteht darin, dass wir gestreamte Anfragen akzeptieren und Daten an den Client streamen können.
    • Jede Anfrage / Antwort könnte eine kleine json-Payload oder ein 200MB-Dokument enthalten.
  • Wenn Sie repro - dieser Code verwendet die Newtonsoft Json-Bibliothek für die Serialisierung.

Warum passiert das und wie kann ich das beheben?

BEARBEITEN: Der 504-Statuscode könnte ein Ablenkungsmanöver sein, das von fiddler abgeleitet wurde, mit dem ich gerade teste. Das Senden derselben Anfrage von System.Net.Http.HttpClient zeigt an, dass die Verbindung geschlossen wurde, bevor eine Antwort empfangen wurde.

BEARBEITEN: Das Einstellen des Inhaltstyps auf so ziemlich alles andere (einschließlich nicht-sensitiver Werte) funktioniert gut. Der einzige Inhaltstyp, den ich bekommen kann, um es zu brechen, ist application / json

    
Gavin Osborn 13.02.2013, 04:25
quelle

1 Antwort

-1

So habe ich es geschafft, aber es ist ein einfacher WCF-Dienst, der lokal in IIS gehostet wird. Ich verwende Microsoft.ServiceBus oder Azure nicht.

Antwort des ersten Fiedlers. Wenn dies das ist, wonach Sie suchen, fahren Sie fort mit dem Code:)

%Vor%

Service-Definition:

%Vor%

Und web.config

%Vor%     
Schultz9999 04.04.2013 17:23
quelle