json - 将 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”。预期的正文格式值为“原始”。
解决方案
推荐阅读
- sql - 如何使用 PowerShell 从存储过程返回多个记录集
- python - 如何使用 tkinter 定义不同的样式/主题
- javascript - GTM dataLayer.push 会影响性能吗?
- php - 一个接一个地向多维数组添加“简单”数组元素 PHP
- intellij-idea - 在 Intellij Idea 中滚动选项卡时如何使其更快?
- javascript - 在 Javascript 上导入模块时出错
- javascript - 如何在 Angular 10 中使用 Azure Maps?[解决了]
- python - 当我在 while 循环中使用 GOTO 命令时它不起作用
- python - 返回一个空列表而不是二元组
- javascript - 如何使用脚本制作与一组复选框交互的 TagList?