HTTP/1.1 415 无法处理该消息,因为内容类型“application/json; charset=utf-8”与期望类型“text/xml; charset=utf-8”不符。

6

我正在尝试将JSON字典POST到C# WCF,但在调用时出现HTTP响应415。有人能告诉我代码哪里有问题吗?

对象类

 [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.1 415 无法处理消息,因为内容类型“application/json; charset=utf-8”不是预期的类型“text/xml; charset=utf-8”。 服务器:Microsoft-IIS/7.5 X-Powered-By:ASP.NET 日期:Thu, 29 Nov 2012 01:21:55 GMT 内容长度:0

1个回答

13

您的服务端点未正确配置以接收JSON输入。为了使[WebInvoke]属性生效,您的端点需要具有webHttpBinding,并且还应该具有类型为<webHttp/>的端点行为

确保它已正确配置的一种简单方法是在.svc文件上使用Factory属性。例如下面的示例:

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

如何在类库项目中添加工厂? 实际上,我正在尝试在类库中调用Web服务? - Razim Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接