gpt4 book ai didi

WCF WebInvoke 响应格式

转载 作者:行者123 更新时间:2023-12-04 17:42:14 24 4
gpt4 key购买 nike

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

    [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 并将格式作为方法的参数?从阅读周围我不这么认为......接下来的事情
上面的代码没问题并且可以工作,但是我遇到了问题,我希望能够指定一个默认值,所以当没有传递格式参数时,我只是默认,但如果我像这样装饰
    [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 does not support multiple templates that have equivalent path as template 'getstreamurl?ch={ch}' but have different query strings, where the query strings cannot all be disambiguated via literal values. See the documentation for UriTemplateTable for more detail



显然可以区分它们,但似乎 WCF 只是阅读了论点,仅此而已......有什么建议吗?

最佳答案

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

马克

更新:正如 Steve Michelotti 正确指出的那样,现在可以在 WCF 4.0 中实现 JSON 和 XML 之间的这种自动切换。 WCF 4.0 具有改进的 REST 支持,其中还包括基于 HTTP 接受 header 的格式消息选择功能。

有关 WCF 4.0 新功能的更多信息,请参阅:A Developer's Introduction to WCF 4.0

关于WCF WebInvoke 响应格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1008706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com