Serialisieren in Json mit Programmierung auf Nachrichtenebene

WCF unterstützt die Serialisierung von Daten im JSON-Format. In diesem Thema wird beschrieben, wie WCF angewiesen wird, Typen mit dem DataContractJsonSerializer zu serialisieren.

Programmieren typisierter Nachrichten

Der DataContractJsonSerializer wird verwendet, wenn das WebGetAttribute oder WebInvokeAttribute auf einen Dienstvorgang angewendet wird. Beide Attribute ermöglichen es Ihnen, das RequestFormat und das ResponseFormat anzugeben. So verwenden Sie JSON für Anforderungen und Antworten. Legen Sie beide auf fest WebMessageFormat.Json. JSON erfordert die Verwendung der WebHttpBinding, die automatisch das WebHttpBehavior konfiguriert. Weitere Informationen finden Sie unter Serialisierung und Deserialisierung. Weitere Informationen zu JSON und WCF finden Sie unter Service Station – Eine Einführung in RESTful Services mit WCF.

Wichtig

JSON erfordert die Verwendung von WebHttpBinding und WebHttpBehavior, die keine SOAP-Kommunikation unterstützen. Dienste, die mit der WebHttpBinding kommunizieren, bieten keine Unterstützung für das Verfügbarmachen von Dienstmetadaten, sodass Sie Dienstverweis hinzufügen in Visual Studio und das Befehlszeilentool svcutil nicht verwenden können, um einen clientseitigen Proxy zu generieren. Weitere Informationen zum programmgesteuerten Aufrufen von Diensten, die WebHttpBinding verwenden, finden Sie unter Verwenden von REST-Diensten mit WCF.

Programmieren nicht typisierter Nachrichten

Beim direkten Arbeiten mit nicht typisierten Message-Objekten müssen Sie die Eigenschaften für die nicht typisierte Nachricht explizit festlegen, um sie im JSON-Format zu serialisieren. Der folgende Codeausschnitt veranschaulicht, wie Sie dabei vorgehen müssen:

 Message response = Message.CreateMessage(  
                  MessageVersion.None,    // No SOAP message version  
                             "*",                     // SOAP action, ignored since this is JSON  
                             "Response string: JSON format specified", // Message body  
                             new DataContractJsonSerializer(typeof(string))); // Specify DataContractJsonSerializer  
      response.Properties.Add( WebBodyFormatMessageProperty.Name,
                    new WebBodyFormatMessageProperty(WebContentFormat.Json)); // Use JSON format  

Siehe auch