Я столкнулся с проблемой, которую не могу исправить. Я нашел несколько связанных вопросов по SO, но пока никто мне не помог.
Это код, который работает:
HttpWebRequest handler = (HttpWebRequest)WebRequest.Create("someUrl");
handler.Method = "POST";
string postData = "some data";
byte[] data = Encoding.ASCII.GetBytes(postData);
handler.ContentLength = data.Length;
using (var stream = handler.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
handler.ContentType = "application/xml; charset=utf-8";
HttpWebResponse response = (HttpWebResponse)handler.GetResponse();
Конечная точка (URL-адрес) - это интерфейс WCF REST. Когда я запускаю этот код в тестовом интерфейсе REST, он работает нормально.
Однако, когда я запускаю его в реальном интерфейсе REST, я получаю эту ошибку:
Удаленный сервер возвратил ошибку: (415) Отсутствует тип содержимого.
Теперь интерфейс REST одинаков на обеих конечных точках. Однако есть 2 отличия, которые могут повлиять на результат:
Во-первых, живой REST работает по https и имеет
<security mode = "Transport"/>
в web.config в разделе webHttpBinding.
Во-вторых, тестовый REST-сервер обновлен в отношении обновлений Windows (.Net), а живой REST-сервер - нет.
Кто-нибудь знает, как решить эту проблему?
Заранее спасибо!





Хорошо, нашел с помощью Fiddler: когда эта строка
using (var stream = handler.GetRequestStream())
выполняется, соединение уже настроено, поэтому, когда я позже установлю Content Type, будет уже слишком поздно.
Когда я перемещаю эту строку кода почти наверх
handler.ContentType = "application/xml; charset=utf-8";
он работает, и я вижу, что тип контента передается.
Это не отвечает на вопрос, почему изначально он работал в тестовой среде, а не вживую, а пока ..
Проверьте, решает ли это вашу проблему social.msdn.microsoft.com/Forums/vstudio/en-US/…