2012-11-29 5 views
6

próbuje POST słownika json do C# WCF, kiedy go wywołać HTTP Response 415. Ktoś może mi powiedzieć, co jest nie tak z moim kodem.HTTP/1.1 415 Nie można przetworzyć wiadomości, ponieważ typ zawartości "application/json; charset = utf-8 'nie był oczekiwanym typem "text/xml; charset = utf-8 '

obiekt klasy

[DataContract] 
public class Class1 
{ 
    [DataMember] 
    public string AccNo; 
    [DataMember] 
    public string CompanyName; 
    [DataMember] 
    public string DocDate; 
} 

IService1.cs

[OperationContract] 
    [WebInvoke(Method = "POST", UriTemplate = "json/PostSalesOrderData", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)] 
     string PostSalesOrderData(string data); 

Service1.svc.cs

public string PostSalesOrderData(string data) 
    { 

     JavaScriptSerializer serializer = new JavaScriptSerializer(); 

     Dictionary<string, Class1> dict = serializer.Deserialize<Dictionary<string, Class1>>(data); 

     return dict["Debtor"].AccNo.ToString(); 
    } 

Fiddle Szczegóły

HTTP/1.1 415 Nie można przetwarzać wiadomość, ponieważ typ zawartości "application/json; charset = utf-8 'nie był oczekiwanym typem "text/xml; charset = utf-8 '. serwera: Microsoft-IIS/7.5 X-Powered-By: ASP.NET Data: Thu, 29 listopada 2012 01:21:55 GMT Content-Length: 0

Odpowiedz

12

Punkt końcowy za usługę nie jest prawidłowo skonfigurowany do odbierania danych wejściowych JSON. Aby atrybut [WebInvoke] być honorowane, twój końcowy musi mieć webHttpBinding i powinien on mieć również zachowanie końcowego typu <webHttp/>

Prostym sposobem, aby upewnić się, że jest on poprawnie skonfigurowany jest użycie atrybutu Factory na plik .svc. Przykład podobny do poniższego:

<%@ ServiceHost Language="C#" Debug="true" 
       Service="YourNamespace.YourServiceClass" 
       Factory="System.ServiceModel.Activation.WebServiceHostFactory" %> 
+0

Jak dodać fabrykę do projektu classLibrary? infact próbuję połączyć się z usługą internetową w bibliotece klasy? –

Powiązane problemy