内容类型application / json;响应消息的charset = utf-8与绑定的内容类型不匹配(text / xml; charset = utf-8)

时间:2016-09-12 02:16:49

标签: json binding wsdl service-reference

尝试从Web服务接收数据时收到此错误消息。

这是我的代码:

ChannelFactory<IInterface> factory = new ChannelFactory<IInterface>(new BasicHttpBinding(), new EndpointAddress("http://example.net/MyService.svc/Test"));
var client = factory.CreateChannel();

MyObj x = client.Test();

虽然我收到错误,但我可以在错误消息中看到响应(JSON字符串)。我尝试将绑定更改为WebHttpBinding,并添加WebHttpBehavior的端点行为,但这只是返回一个空对象。

1 个答案:

答案 0 :(得分:0)

我解决了。最初我使用WebHttpBinding是正确的,但是对于端点行为我需要稍微修改它。下面是工作代码:

ChannelFactory<IInterface> factory = new ChannelFactory<IInterface>(new WebHttpBinding(), new EndpointAddress("http://example.net/MyService.svc/Test"));

WebHttpBehavior behavior = new WebHttpBehavior()
{ 
    DefaultOutgoingResponseFormat = WebMessageFormat.Json,
    DefaultBodyStyle = WebMessageBodyStyle.Wrapped,
    HelpEnabled = true,
    DefaultOutgoingRequestFormat = WebMessageFormat.Json
};

factory.Endpoint.Behaviors.Add(behavior);

var client = factory.CreateChannel();

MyObj x = client.Test();