Я слишком долго боролся с этим, поэтому решил опубликовать вопрос.
У меня есть сайт MVC 3 RC2, на котором размещена конечная точка нулевой конфигурации WCF, сам сайт и приложение SL 4. Когда приложение SL использует объект WeClient для извлечения данных из конечной точки, данные возвращаются в формате xml (по умолчанию, если не указано иное). Когда я пытаюсь изменить заголовки с помощью этого фрагмента
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 для поиска нужного формата в веб-браузере.
Спасибо,
Стивен
EDIT
С тех пор я узнал от Блока Гленна, что все делал неправильно, как в этом примере, так и в этом с классом HttpWebRequest Как использовать метод GttpWebRequest с ContentType = "application / json " Тип содержимого используется для указания того, что вы планируете отправлять на сервер, примите то, что вы ожидаете получить обратно.