Я пытаюсь сделать службу WCF через basicHttpBinding для использования через https. Вот мой web.config:
<!-- language: xml -->
<service behaviorConfiguration="MyServices.PingResultServiceBehavior"
name="MyServices.PingResultService">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="defaultBasicHttpBinding"
contract="MyServices.IPingResultService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
...
<bindings>
<basicHttpBinding>
<binding name="defaultBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
...
<behaviors>
<serviceBehaviors>
<behavior name="MyServices.UpdateServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Я подключаюсь с помощью WCFStorm, который способен правильно извлечь все метаданные, но когда я вызываю реальный метод, я получаю:
Предоставленная схема URI «https» недействительна; ожидаемое http Имя параметра: через
Ответы:
Попробуйте добавить учетные данные сообщения в ваш app.config, например:
источник
Добавив это как ответ, просто потому что вы не можете сделать много необычного форматирования в комментариях.
У меня была та же проблема, за исключением того, что я создавал и привязывал свой клиент веб-сервиса полностью в коде.
Причина в том, что DLL загружалась в систему, что запрещало использование файлов конфигурации.
Вот код, который необходимо обновить для связи по SSL ...
источник
Меняться от
в
в вашем файле web.config. Это изменение позволит вам использовать https вместо http
источник
Вы запускаете это на Cassini (против сервера dev) или на IIS с установленным сертификатом? В прошлом у меня были проблемы при попытке подключить безопасные конечные точки на веб-сервере dev.
Вот обязательная конфигурация, которая работала для меня в прошлом. Вместо этого
basicHttpBinding
он используетwsHttpBinding
. Я не знаю, если это проблема для вас.и конечная точка
Также убедитесь, что вы изменили конфигурацию клиента, чтобы включить безопасность транспорта.
источник
У меня было такое же исключение в
custom binding
сценарии. Любой, кто использует этот подход, может проверить это тоже.Я на самом деле добавляю ссылку на сервис из
local WSDL
файла. Он был успешно добавлен, и в файл конфигурации была добавлена необходимая привязка. Однако, фактическое обслуживание было https; не http. Поэтому я изменил httpTransport Elemet какhttpsTransport
. Это решило проблемуСсылки
источник
У меня была ТОЧНАЯ та же проблема, что и у ОП. Моя конфигурация и ситуация были идентичны. Я наконец сузил проблему до появления проблемы в WCFStorm после создания ссылки на службу в тестовом проекте в Visual Studio и подтверждения того, что служба работает. В Storm вам нужно нажать на опцию «Config» (НЕ «Client Config»). После этого нажмите вкладку «Безопасность» в появившемся диалоговом окне. Убедитесь, что для параметра «Тип проверки подлинности» установлено значение «Нет» (по умолчанию используется «Проверка подлинности Windows»). Престо, это работает! Я всегда тестирую свои методы в WCFStorm по мере их создания, но никогда не пытался использовать его для подключения к тому, который уже настроен на SSL. Надеюсь, это поможет кому-то!
источник
Столкнулся с той же проблемой, вот как мое решение оказалось в конце:
Я в основном заменил каждое вхождение Http на Https. Вы можете попробовать добавить их оба, если хотите.
источник
Если вы делаете это программно, а не в web.config, то это:
источник
Полезно помнить, что файлы конфигурации можно разделить на дополнительные файлы, чтобы упростить изменение конфигурации на разных серверах (dev / demo / production и т. Д.), Без необходимости перекомпилировать код / приложение и т. Д. Например, мы используем их, чтобы позволить инженерам на месте вносить изменения в конечную точку, не касаясь «настоящих» файлов.
Первый шаг - переместить секцию привязок из WPF App.Config в отдельный файл.
Раздел «Поведение» настроен так, чтобы разрешать как http, так и https (кажется, не влияет на приложение, если оба разрешены)
И мы перемещаем секцию привязок в ее собственный файл;
В файле bindings.config мы переключаем безопасность на основе протокола
Теперь инженерам на сайте нужно только изменить файл Bindings.Config и Client.Config, где мы храним фактический URL для каждой конечной точки.
Таким образом, мы можем изменить конечную точку с http на https и обратно, чтобы протестировать приложение без необходимости изменения какого-либо кода.
Надеюсь это поможет.
источник
Чтобы перефразировать вопрос в ОП:
Учебные руководства WCFStorm решают эту проблему в разделе Работа с IIS и SSL .
Их решение сработало для меня:
Элемент (1) «последний действующий элемент» означает удаление префикса пространства имен, который VS добавляет к атрибуту контракта конечной точки, по умолчанию «ServiceReference1»
поэтому в app.config, который вы загружаете в WCFStorm, вы хотите использовать ListsService:
источник
Мне нужны были следующие привязки, чтобы заставить мою работать:
источник
wsHttpBinding - проблема, потому что silverlight ее не поддерживает!
источник