Я пытаюсь сделать сервис 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, например:
<bindings>
<basicHttpBinding>
<binding name="defaultBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="Certificate" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
Вы запускаете это на Cassini (против dev-сервера) или на IIS с установленным сертификатом? У меня были проблемы в прошлом, когда я пытался подключить безопасные конечные точки на веб-сервере разработчиков.
Вот конфигурация привязки, которая работала для меня в прошлом. Вместо basicHttpBinding
используется wsHttpBinding
. Я не знаю, является ли это проблемой для вас.
<!-- Binding settings for HTTPS endpoint -->
<binding name="WsSecured">
<security mode="Transport">
<transport clientCredentialType="None" />
<message clientCredentialType="None"
negotiateServiceCredential="false"
establishSecurityContext="false" />
</security>
</binding>
и конечная точка
<endpoint address="..." binding="wsHttpBinding"
bindingConfiguration="WsSecured" contract="IYourContract" />
Также убедитесь, что вы изменили конфигурацию клиента, чтобы включить транспортную безопасность.