有没有办法在给定客户端传递的参数的方法上动态更改 WebResponseFormat?我默认我的 WebResponseFormat 为 XML,但我想让客户端有机会将格式指定为 JSON 或 XML,如果未指定,则默认为 XML。
目前我正在做以下事情:
[WebGet(UriTemplate = "objects", BodyStyle = WebMessageBodyStyle.Bare)]
[OperationContract]
List<SampleObject> GetObjects();
用户可以通过以下方式调用它:
http://localhost/rest/myservice/objects
然后,他们可以通过执行以下操作指定格式:
http://localhost/rest/myservice/objects?format=json
问题是当我尝试通过以下方式设置响应内容类型时:
WebOperationContext.Current.OutgoingResponse.ContentType = "application/json";
这只是返回 XML,但浏览器会尝试像 JSON 对象一样处理它,而不是将响应序列化为 JSON。
除了使用 Stream 作为返回值并自己序列化响应之外,这甚至可能在 .NET 3.5 中实现吗?如果没有,是否有更好的解决方案?