Можно ли вызвать службу WCF без указания типа контента? - PullRequest
2 голосов
/ 19 мая 2011

Я пытаюсь заменить устаревший веб-сервис REST / plain старый xml на WCF с помощью webHttpBinding.Он ДОЛЖЕН быть обратно совместимым с существующими клиентами - которые в настоящее время не отправляют заголовок типа содержимого в запросах.

Когда я указываю своим клиентам на мой новый веб-сервис, я получаю HTTP ERROR 415 - отсутствует тип содержимого.

Можно ли настроить WCF так, чтобы он принимал необработанные запросы без заголовка типа содержимого?

Ответы [ 2 ]

1 голос
/ 19 мая 2011

415 - это не «отсутствующий тип содержимого», это 415 Неподдерживаемый тип носителя . Это означает, что сервер получает тип контента, он просто не знает, как с ним обращаться. Согласно спецификации HTTP, ДОЛЖНО проверять тип контента. НЕ ДОЛЖЕН, поэтому WCF ДОЛЖЕН принять запрос без содержимого. Если это не так, возможно, вы захотите использовать более новый WCF Web API , потому что они следуют спецификации HTTP и позволяют передавать контент без заголовка типа контента.


Обновление:

Видимо, это была ошибка в более ранней версии .Net Framework, и существует обходной путь / исправление https://connect.microsoft.com/wcf/feedback/details/475964/content-type-header-validated-at-the-transport-level-instead-of-the-application-level-and-trows-a-415-exception

0 голосов
/ 06 июня 2011

Под .net 3.5 ответ НЕТ. Кажется, что тип контента неверно проверен на транспортном уровне, а не на прикладном уровне. Единственный способ обойти это - использовать пользовательскую привязку с пользовательским HtppTransportChannel.

Эта ошибка исправлена ​​в .net 4.0

...