首页 > 解决方案 > 将 JSON 传递给 WCF Web 方法

问题描述

我有一个 Web 服务,其中一些客户在调用该应用程序时遇到问题。

该问题与他们传入 JSON 并将 Content-Type 标头指定为 JSON 相关,但 WCF 服务似乎不接受该标头,并且希望不设置该标头或将其设置为八位字节流.

奇怪的是,当 Content-Type 标头设置为 application/json 时,一个单独的 Web 方法起作用。

这是我遇到问题的方法的属性和声明

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "events/{eventId}/devices/{deviceId}/setid?ac={ac}")]
    OperationResult SetId(string eventId, string deviceId, string ac, Stream data);

这是有效方法的属性和声明

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "activate?deviceId={deviceID}")]
OperationResult<ActivationResult> ActivateDevice(string deviceID, Stream data);

现在我知道它们是 2 种不同的方法,但是如果我提供 application/json 的 Content-Type 标头,则激活方法有效,但 SetId 方法没有。

在每个方法的实际实现中,将流参数转换为对应的 JSON 类。任何想法为什么这对两者都不起作用?

异常消息是“用于操作“SetId”的传入消息包含无法识别的 http 正文格式值“Json”。预期的正文格式值为“原始”。

标签: jsonwcf

解决方案


推荐阅读