我有 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 不支持具有与模板 'getstreamurl?ch={ch}' 等效路径但具有不同查询字符串的多个模板,其中查询字符串不能全部通过文字值消除歧义。有关更多详细信息,请参阅 UriTemplateTable 的文档
它们显然可以区分开来,但似乎 WCF 只是在阅读论点,仅此而已……有什么建议吗?