首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF WebInvoke ResponseFormat

WCF WebInvoke ResponseFormat
EN

Stack Overflow用户
提问于 2009-06-17 18:12:17
回答 2查看 9.2K关注 0票数 5

我有一个WCF restul服务,我想让用户选择他们想要的请求格式,我有装饰。

代码语言:javascript
复制
    [OperationContract]
    [WebInvoke(Method = "GET", 
        ResponseFormat = WebMessageFormat.Xml, 
        BodyStyle = WebMessageBodyStyle.Wrapped, 
        UriTemplate = "getstreamurl?ch={ch}&format=xml")]
    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "getstreamurl?ch={ch}&format=json")]

首先,是否有一种方法可以在运行时指定ResponseFormat并将格式作为方法的参数?环顾四周我不这么认为..。接下来,上面的代码是可以使用的,但是我有一个问题,我希望能够指定一个缺省值,所以当没有格式争论被传递时,我只是默认的,但是如果我像这样装饰的话。

代码语言:javascript
复制
    [WebInvoke(Method = "GET", 
        ResponseFormat = WebMessageFormat.Xml, 
        BodyStyle = WebMessageBodyStyle.Wrapped, 
        UriTemplate = "getstreamurl?ch={ch})]

    [OperationContract]
    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "getstreamurl?ch={ch}&format=json")]

如果XML是默认的,如果我试图通过浏览器调用服务方法,它会告诉我:

UriTemplateTable不支持具有与模板“getstreamurl?ch={ch}”等效路径但具有不同查询字符串的多个模板,其中查询字符串不能通过文字值全部消除歧义。有关详细信息,请参阅UriTemplateTable文档

它们显然是可以区分的,但似乎WCF只是在阅读论点,这就是it...Any的建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-17 21:08:35

不,我不认为你能在运行时以编程的方式做到这一点。当然,如果要从您的服务中公开两个不同的端点--一个返回,另一个返回JSON,然后以编程方式从客户端应用程序中选择调用哪个端点,那么可以做什么?

Marc

更新:正如Steve正确指出的那样,和之间的自动切换现在可以在WCF4.0中实现。WCF 4.0有一个改进的REST支持,它还包括基于HTTP接受报头的格式消息选择功能。

有关WCF4.0的新特性的更多信息,请参见:开发人员对WCF 4.0的介绍

票数 6
EN

Stack Overflow用户

发布于 2011-07-30 13:45:49

如果您的rest服务是自动配置的,则可以选择响应类型。

然后,在客户端请求时,只需添加所需的标头Accept: application/json

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1008706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档