Я решил свою проблему и собираюсь обновить этот вопрос для дальнейшего использования и для всех, кто может столкнуться с этой проблемой.
Хитрость в том, чтобы зарегистрировать новый элемент кодировки текстачтобы определить тип сообщений, которые может принять эта привязка.
Поскольку элемент <textMessageEncoding />
действительно может принимать только SOAP11 (text / xml) и SOAP12 (application / soap + xml), регистрируя новый пользовательский элемент, который можетбыть настроенным еще дальше - самый надежный способ сделать это.
У Microsoft есть пример кода для выполнения этого, который можно легко импортировать в решение (я создал отдельную библиотеку для размещения этого кода для справки).Эти справочные данные можно найти здесь здесь , а пример кода здесь .
Как только этот код реализован, вы можете определить новую комбинацию textMessageEncoding элемента customTextMessageEncoding, например <customTextMessageEncoding encoding="utf-8" mediaType="text/xml" messageVersion="Soap12" />
.Обратите внимание, что ссылка ссылки неправильно пометила строку выше с contentType вместо mediaType .Вышеуказанная комбинация позволила мне зарегистрировать привязку с конвертом SOAP 1.2 и типом контента SOAP 1.1.
Еще одна вещь, которую нужно сделать, - это вместо этого использовать mediaType, чтобы изменить тип ответа, и переопределить IsContentTypeSupported дляMessageEncoder, чтобы служба могла отвечать на другой тип контента.это также требование от клиента, как бы необычно оно ни было.Теперь служба может принимать как text / xml, так и application / soap + xml (через переопределенный метод) и отвечать на предоставленный mediaType
В двух словах, решение требует:
- внедритьнастраиваемый кодировщик и фабрика кодировщиков
- Реализация элемента привязки для настраиваемого кодировщика
- Использование настраиваемой конфигурации привязки для интеграции настраиваемых элементов привязки
- Разработка обработчика настраиваемой конфигурации для разрешения файлаконфигурация (app.config или web.config) пользовательского элемента привязки
- Регистрация нового элемента привязки в web.config
- Использование нового элемента привязки для настройки привязки