WCF服务。使用Accept HTTP Header将响应类型设置为XML / JSON?

时间:2014-04-14 10:26:10

标签: c# xml json wcf serialization

我希望我的WCF服务接受并响应JSON或XML中的请求。 我认为WCF应该根据客户端指定的Accept头自动解释响应类型。 但是在我的客户端请求中,我将accept标头指定为application / json但我收到了XML响应。

这是我的服务定义:

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/GetChecks", BodyStyle = WebMessageBodyStyle.Bare)]
Check[] GetChecks(MyCustomObj Object);

我在这里提出请求:

using (WebClient client = new WebClient())
{
    client.Headers["Content-type"] = "application/json";
    client.Headers["Accept"] = "application/json";

    string response = client.UploadString(endpoint, JSONRequestString);   
    // Response is XML
}

我知道我可以制作两个端点,并指定一个作为XML,另一个指定为JSON但是id而不是这样做。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

为此,您在服务器上将属性automaticFormatSelectionEnabled设置为true

您可以在config

中执行此操作
<webHttpEndpoint> 
    <standardEndpoint name="" helpEnabled="true"  
                                automaticFormatSelectionEnabled="true"/> 
</webHttpEndpoint>

或代码:

var host = new ServiceHost(typeof (PricingService));
var beh = new WebHttpBehavior { AutomaticFormatSelectionEnabled = true };
host.AddServiceEndpoint(typeof (IPricingService), new WebHttpBinding(), uri)
            .Behaviors.Add(beh);