Dan*_*iel 5 rest wcf responseformat
我有一个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")]
Run Code Online (Sandbox Code Playgroud)
首先,有没有办法在运行时指定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")]
Run Code Online (Sandbox Code Playgroud)
在XML是默认值的情况下,如果我尝试通过浏览器调用服务方法,它会告诉我:
UriTemplateTable不支持具有与模板'getstreamurl?ch = {ch}'等效路径的多个模板,但具有不同的查询字符串,其中查询字符串不能通过文字值消除歧义.有关更多详细信息,请参阅UriTemplateTable的文档
它们显然可以区分,但似乎WCF只是阅读论证并认为它...任何建议?
不,我认为你不能在运行时以编程方式做到这一点.当然,如果要从服务中公开两个不同的端点,您可以做什么- 一个返回XML,另一个返回JSON,然后以编程方式从客户端应用程序中选择要调用的端点.
渣
更新:正如Steve Michelotti正确指出的那样,现在可以在WCF 4.0中实现JSON和XML之间的自动切换.WCF 4.0具有改进的REST支持,其还包括基于HTTP接受头的格式消息选择功能.
有关WCF 4.0新功能的更多信息,请参阅:开发人员的WCF 4.0简介
| 归档时间: |
|
| 查看次数: |
8923 次 |
| 最近记录: |