我希望我的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而不是这样做。
有什么想法吗?
答案 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);