【问题标题】:Returning JSON AND XML format from a .NET 3.5 WCF web service (REST)从 .NET 3.5 WCF Web 服务 (REST) 返回 JSON 和 XML 格式
【发布时间】:2009-07-16 21:36:08
【问题描述】:

我有一个返回 XML 响应的现有 Web 服务,我想添加一些返回 JSON 的新方法。我是否必须创建以 JSON 格式返回的单独 Web 服务,还是可以混合使用?

如果我使用 ResponseFormat = WebMessageFormat.JSON,我需要使用 [DataContractFormat] 注释服务,但我似乎无法拥有该服务和 xml 类型响应格式所需的 [XmlSerializerFormat]。

【问题讨论】:

    标签: .net xml wcf web-services json


    【解决方案1】:

    我不明白为什么这是不可能的。您使用 [ServiceContract] 属性(不是 DataContractFormat)注释服务。它应该看起来像

     [ServiceContract]
        public interface IDoStuff
        {
            [OperationContract]
            [WebInvoke(Method = "POST",
                 UriTemplate = "DoStuff",
                 ResponseFormat = WebMessageFormat.Json,
                 RequestFormat = WebMessageFormat.Json)]
            TestObj DoWork(TestInputObj Inp);
        }
    

    要使其成为 xml,只需更改响应格式。当你执行你的 post 命令时,你会得到 json,一个单独的 xml 格式的方法会给你 xml。

    【讨论】:

      【解决方案2】:

      您知道需要 XmlSerializerFormat 吗?仅当您需要序列化为不符合 Data Contract Serializer 规则的 XML 时才需要这样做。

      如果您确实需要,那么您确实需要第二项服务。不过这很容易。只需将共同操作的内容提取到单独的方法中,然后从两个服务中调用这些方法。

      【讨论】:

        【解决方案3】:

        我相信您指的是“粘贴为 XML”类型中的 XmlSerializer 属性。如果是这样,它不会影响您的 JSON 数据。您可以使用它来序列化 XML 和 JSON。 response.Content.ReadAsJsonDataContract<T>()/ReadAsXmlDataContract<T>() 其中 T 代表 XMLSerializable 类型。

        【讨论】:

          猜你喜欢
          • 2018-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-29
          • 2012-01-09
          • 1970-01-01
          相关资源
          最近更新 更多