我的经验是 WCF 在这方面不是很好。MVC 的“操作结果”概念是一个很大的改进,它让您可以返回给定端点所需的任何内容。(据说新的“Web API”将是 WCF 和 MVC 功能的结合。)
也就是说,让客户端选择响应格式的最简单的 WCF 方法是指定Stream返回类型,并根据要求对结果进行序列化。
因此,像这样声明方法,并使用您为JSON和XML选择的序列化程序。
[OperationBehavior]
[WebGet()]
public Stream SomeOperation(string format)
{
string test = "Hello world";
string encodedResult;
if (format.ToLower() == "xml") {
// serialize as XML (eg, XML Serializer)
HttpContext.Current.Response.ContentType = "text/xml";
}
else if (format.ToLower() == "json") {
// serialize as JSON (eg, Newtonsoft Json)
HttpContext.Current.Response.ContentType = "application/json";
}
var ms = new MemoryStream(Encoding.UTF8.GetBytes(encodedResults));
return ms;
}
对于您的第二个问题,我建议使用像 Fiddler 这样的免费工具来检查来自服务器的原始 HTTP 响应。