6

jsonディクショナリをC#WCFにPOSTしようとすると、HTTPResponse415を呼び出します。誰かが私のコードの何が問題なのか教えてくれます。

オブジェクトクラス

 [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();
    }

フィドルの詳細

HTTP /1.1415コンテンツタイプが'application/ json;であるため、メッセージを処理できません。charset =utf-8'は予期されたタイプ'text/xmlではありませんでした。charset =utf-8'。サーバー:Microsoft-IIS / 7.5 X-Powered-By:ASP.NET日付:2012年11月29日木曜日01:21:55 GMTコンテンツの長さ:0

4

1 に答える 1

12

サービスのエンドポイントが、JSON入力を受け取るように適切に構成されていません。[WebInvoke]属性が尊重されるためには、エンドポイントにが必要webHttpBindingであり、タイプのエンドポイント動作も必要です。<webHttp/>

適切に構成されていることを確認する簡単な方法の1つはFactory、.svcファイルの属性を使用することです。以下の例のようなもの:

<%@ ServiceHost Language="C#" Debug="true"
                Service="YourNamespace.YourServiceClass"
                Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
于 2012-11-29T02:54:52.413 に答える