【发布时间】:2011-01-03 02:11:13
【问题描述】:
我已经为此苦苦挣扎了太久,所以我决定发布这个问题。
我有一个 MVC 3 RC2 站点,它托管 WCF 零配置端点、网站本身和 SL 4 应用程序。当 SL 应用程序使用 WeClient 对象从端点拉下数据时,数据将以 xml 形式返回(除非另有说明,否则为默认值)当我尝试使用此 sn-p 更改标头时
var client = new WebClient();
var uri = new Uri("http://example.com/Services/GetFoodDescriptionsLookup(2100)");
// A WebClient instance does not send optional HTTP headers by default.
// If your request requires an optional header,
// you must add the header to the Headers collection.
// http://msdn.microsoft.com/en-us/library/system.net.webheadercollection.aspx
// WRONG
client.Headers[HttpRequestHeader.ContentType] = "application/json";
// RIGHT
client.Headers[HttpRequestHeader.Accept] = "application/json";
client.DownloadProgressChanged += (o, e) =>
{
Status = String.Format("BytesReceived : {0}", e.BytesReceived);
};
client.DownloadStringCompleted += (o, e) =>
{
Status = "Downloading...Done.";
Result = e.Result;
};
client.DownloadStringAsync(uri);
我收到“由于对象的当前状态,操作无效。” ,如果我删除它,调用成功但返回为 xml。
我的问题的本质是“如何将内容类型更改为 application/json 以便 wcf 服务可以返回 JSON”?端点可以使用,因为我可以使用 jQuery 在 Web 浏览器中提取正确的格式。
谢谢你, 斯蒂芬
编辑
我从 Glenn Block 那里得知我做错了,无论是在这个例子中,还是在这个带有 HttpWebRequest 类的例子中 How do I use HttpWebRequest GET method w/ ContentType="application/json" 内容类型用于指示您计划发送到服务器的内容, 接受是你期望得到的结果。
【问题讨论】:
标签: asp.net-mvc silverlight wcf