.Net WCF 415 Отсутствует тип содержимого - PullRequest
0 голосов
/ 25 июня 2018

Я столкнулся с проблемой, которую не могу исправить.Я нашел несколько связанных вопросов по 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) является REST-интерфейсом WCF,Когда я запускаю этот код в тестовом интерфейсе REST, он работает нормально.

Однако, когда я запускаю его на живом интерфейсе REST, я получаю эту ошибку:

Удаленный сервер возвратил ошибку: (415) Отсутствует тип содержимого.

Теперь интерфейс REST одинаков на обеих конечных точках.Однако есть 2 различия, которые могут повлиять на результат:

Во-первых, живой REST работает по протоколу https и имеет

<security mode="Transport"/>

в файле web.config в разделе webHttpBinding.

Во-вторых, тестовый REST-сервер обновлен относительно обновлений Windows (.Net), а живой REST-сервер нет.

У кого-нибудь есть подсказки, как решить эту проблему?

Заранее спасибо!

1 Ответ

0 голосов
/ 28 июня 2018

Хорошо, нашел его с помощью Fiddler: когда эта строка

using (var stream = handler.GetRequestStream())

выполняется, соединение уже установлено, поэтому, когда я позже установлю Тип контента, будет слишком поздно.

Когда я перемещаю эту строку кода почти наверх

handler.ContentType = "application/xml; charset=utf-8";

работает, и я вижу, что Тип содержимого передается.

Он не отвечает на вопрос, почему изначально он работал в тестовой среде, а не в прямом эфире, но сейчас ..

...