我有一个WCF网络服务,它与一些不同的客户端非常酷。
有些客户将其用作 XML ,其他客户用作 JSON 。 为了有这种行为,我设计了所有服务,好像他们有一个扩展。如果扩展名等于 json ,则返回JSON,否则返回XML。
下面的代码显示了我如何完成此行为。
[WebGet(UriTemplate = "test.{PsFormat}")]
public string test(string PsFormat) {
DefineResponseFormat(PsFormat);
return "test";
}
public static void DefineResponseFormat(string PsFormat)
{
OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse;
if (PsFormat.ToLower() == "json") {
context.Format = WebMessageFormat.Json;
context.ContentType = "application/json; charset=utf-8";
}
else if (PsFormat.ToLower() == "wjson") {
context.Format = WebMessageFormat.Json;
context.ContentType = "application/json; charset=utf-8";
// CHANGE BodyStyle TO WRAPPED
}
else {
context.Format = WebMessageFormat.Xml;
context.ContentType = "text/xml; charset=utf-8";
}
}
问题是,我总是返回JSON,就像WebGet Attribute BodyStyle = WebMessageBodyStyle.Bare一样,这是默认值。而现在,我有一个新的客户端,需要像使用BodyStyle = WebMessageBodyStyle.Wrapped那样使用它。 (在上面的代码中代表,如果有扩展名 wjson 。)
问题是:如何以编程方式更改BodyStyle值?
答案 0 :(得分:1)