我有一个WCF restul服务,我想允许用户选择他们想要的请求格式,我有装饰WCF WebInvoke ResponseFormat
[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不支持有相当的多个模板路径作为模板'getstreamurl?ch = {ch}',但具有不同的查询字符串,其中查询字符串不能全部通过字面值消除歧义。有关更多详细信息,请参阅UriTemplateTable的文档
它们显然可以区分,但看起来WCF只读取参数并且多数民众赞成它......任何建议?
这是不正确的。正如Regfor在他的回应中指出的那样,您可以通过在Accept头中传递适当的值来让相同的端点返回XML或json。 – 2011-07-31 02:25:20
@Steve Michelotti:这个新功能是在.NET 4.0的WCF 4.0中引入的 - 在2009年6月,当我用WCF 3.5 – 2011-07-31 07:13:32