WCF Rest POST 方法接受 JSON 和 XML

Posted

技术标签:

【中文标题】WCF Rest POST 方法接受 JSON 和 XML【英文标题】:WCF Rest POST method to accept both JSON and XML 【发布时间】:2012-08-21 03:04:18 【问题描述】:

正在寻找一种方法来在 WCF RESTful 服务中创建一个可以同时接受 xml 和 json 的 post 方法。我可以看到 Get 方法可以根据请求标头自动返回 json/xml。

我能想到的一个解决方案是:

    以“Stream”的形式获取发布数据并将其读入字符串。 检查请求头并将其反序列化为 json 或 xml。 相应设置 OutgoingResponse 格式并返回响应。

我能够做到#1,但卡在#2 和#3。

【问题讨论】:

【参考方案1】:

Microsoft 已经为您完成了这项工作,不要重新发明***。

public class DataController : ApiController

    public void Post(DataModel model)
    
        // Whether the body contains XML, JSON, or Url-form-encoded it will be deserialized
        // into the model object which you can then interact with in a strongly-typed manner
    


public class DataModel

    public string PropertyA  get; set; 
    public string PropertyB  get; set; 

您可以免费下载包含新 Web API 的 ASP.NET MVC4。 http://www.asp.net/mvc/mvc4 。这基本上是 WCF Web API 的最终产品,不再受支持。除非您已经使用原始 Web API 编写了太多代码以至于无法进行切换,否则从长远来看,这将为您节省大量时间。否则,您将被困在包含永远无法修复的错误的 Beta 产品中。

【讨论】:

你是对的。 Web API 是正确的方法,因为它是最终产品。现在的努力将在未来节省大量时间。感谢您指出。

以上是关于WCF Rest POST 方法接受 JSON 和 XML的主要内容,如果未能解决你的问题,请参考以下文章

在 WCF REST 服务 POST 方法中处理 Json 请求数据

试图让 JQuery Post 与 WCF 通信,但 JSON 数据未被接受

自托管 WCF REST 服务 JSON POST 方法不允许

在 WCF Rest 中发布相关实体

wcf REST 服务和 JQuery Ajax Post:方法不允许

使用 Fiddler 时,Rest WCF Post Json 正文参数始终为空