当前位置:  开发笔记 > 前端 > 正文

RESTful WCF服务,可以用JSON(P)和XML进行响应,还可以用作SOAP Web服务吗?

如何解决《RESTfulWCF服务,可以用JSON(P)和XML进行响应,还可以用作SOAPWeb服务吗?》经验,为你挑选了1个好方法。

给定合同如:

[ServiceContract] public interface IService
{
    [OperationContract]
    [WebGet(UriTemplate = "GetData/{id}.{format}")]
    ResponseData GetData(string id, string format);
}

有没有办法让服务在请求时以json响应:/GetData/1234.json,xml当被请求为/GetData/1234.xml时仍然可以作为一个其他网址的正确肥皂服务,强烈键入wsdl合同?

使用Stream作为GetData的返回值是不可行的,就好像它满足前两个要求一样,wcf无法创建完整的wsdl规范,因为它不知道结果Stream的内容是什么.



1> casperOne..:

应该有两个单独的方法,它们采用id和格式(并且它们将调用返回的共享实现ResponseData)具有不同的WebGet属性:

[ServiceContract]
public interface IService
{
    [OperationContract]
    [WebGet(UriTemplate = "GetData/{id}.{format}.xml", 
        ResponseFormat=WebMessageFormat.Xml)]
    ResponseData GetDataXml(string id, string format);

    [OperationContract]
    [WebGet(UriTemplate = "GetData/{id}.{format}.json", 
        ResponseFormat=WebMessageFormat.Json)]
    ResponseData GetDataJson(string id, string format);
}

对于SOAP端点,您应该能够调用任一方法,但是您必须有一个单独的ServiceHost实例来托管合同的实现.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有