Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JSON传递给WCF web方法_Json_Wcf - Fatal编程技术网

将JSON传递给WCF web方法

将JSON传递给WCF web方法,json,wcf,Json,Wcf,我有一个web服务,其中一些客户端在调用应用程序时遇到问题 这个问题涉及到他们传入JSON,并将内容类型头指定为JSON,但WCF服务似乎不接受该头,并且希望不设置该头,或者将其设置为八位字节流 奇怪的是,当Content-Type头设置为application/json时,一个单独的web方法可以工作 下面是我遇到问题的方法的属性和声明 [OperationContract] [WebInvoke(Method = "POST", UriTemplate = "events/{eventId}

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

这个问题涉及到他们传入JSON,并将内容类型头指定为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);
[运营合同]
[WebInvoke(Method=“POST”,UriTemplate=“activate?deviceId={deviceId}”)]
操作结果激活设备(字符串设备ID、流数据);
现在我知道它们是两种不同的方法,但是如果我提供application/json的Content-Type头,activate方法可以工作,但是SetId方法不能

在每个方法的实际实现中,流参数被转换为相应的JSON类。你知道为什么这两种方法都不管用吗


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

尝试使用
RequestFormat
ResponseFormat
属性。e、 g.:
[WebInvoke(Method=“POST”,UriTemplate=“events/{eventId}/devices/{deviceId}/setid?ac={ac}”,ResponseFormat=WebMessageFormat.Json,RequestFormat=WebMessageFormat.Json)]
仍然遇到同样的问题@thisisbobbs您在使用哪个绑定?请提供您的web.config或频道设置代码(如果您正在代码中配置)。