Недавно мы обновили приложение с .Net 4.5 до 4.6.1.В 4.5 у нас не было тега protocolMapping в нашем web.config.Обновленный сервис, как отметили разработчики, имел этот тег, и поэтому мы развернули его как часть обновления.
Если мы удалим этот тег (по сути, используйте ту же систему .ServiceModel, которую мы использовали в 4.5)мы получаем 404 за все HTTPS-запросы к сервису.Хорошо, так что я оставлю это на месте.
Однако запутанная часть заключается в том, что по умолчанию тег говорит:
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
Это заставило все запросы https использовать basicHttpsBinding, но нашслужба использует customBinding.
Вот наше определение конечной точки со ссылкой на пользовательскую привязку:
<endpoint address="" binding="customBinding"
bindingConfiguration="Soap12SecureBinding"
name="NotificationService" contract="NOTSvc">
Поэтому я изменил значение привязки в protocolMapping на «customBinding», но это не такt забрать ЛЮБОЕ из значений в моей определенной привязке.В нем по-прежнему использовался Soap 1.1, но в моей пользовательской привязке указано Soap 1.2
. Поэтому я добавил привязкуConfiguration в тег add, и теперь мое сопоставление протокола выглядит следующим образом:
<protocolMapping>
<add binding="customBinding" scheme="https"
bindingConfiguration="Soap12SecureBinding" />
</protocolMapping>
ЭТО заставляет его работать, но это не может быть правдой.Во-первых, я теперь использую только одну привязку конфигурации для всех сервисов на моем сайте.С другой стороны, моя конечная точка службы абсолютно ссылается на мою пользовательскую привязку «Soap12SecureBinding», но если я не использую ее явно в своем протоколе протокола, она не будет соблюдена.
Чего мне не хватает?что-то должно быть настроено неправильно, но я потратил почти неделю на эту проблему и выхожу пустым.
Спасибо.