Я пытаюсь использовать https & http для сайта. На веб-сайте есть файлы .svc, которые действуют как служба REST и вызывают из JavaScript.WebHttpBinding с Http и Https
Моя конфигурация:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="AjaxBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="MyServiceBehaviour">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="MyServiceBehaviour" name="MyService.Lookups">
<endpoint address="" behaviorConfiguration="AjaxBehavior"
binding="webHttpBinding" bindingConfiguration="httpWebBinding" contract="MyService.Lookups" >
</endpoint>
<endpoint address="" behaviorConfiguration="AjaxBehavior"
binding="webHttpBinding" bindingConfiguration="httpsWebBinding" contract="MyService.Lookups" >
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="httpsWebBinding">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" />
</security>
</binding>
<binding name="httpWebBinding">
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" />
</security>
</binding>
</webHttpBinding>
</bindings>
</system.serviceModel>
просмотр https://myserver/services/Lookups.svc/Hello дает
Не удалось найти базовый адрес, который соответствует схеме HTTP для конечной точки, с обязательным WebHttpBinding. схемы Registered базовые адреса являются [HTTPS]
просмотр http://myserver/services/Lookups.svc/Hello дает
Не удалось найти базовый адрес, который соответствует схеме HTTPS для конечной точки, с обязательным WebHttpBinding. Схемы зарегистрированных базовых адресов: [http]
Если я удаляю любую конечную точку, она работает. Пример удаления конечной точки, сконфигурированной с помощью bindingConfiguration="httpWebBinding"
, работает для HTTPS,
Как мне заставить работать с HTTP и HTTPS? На данный момент я могу использовать либо http, либо https, удалив одну конечную точку.
Приглашен How can I combine the WCF services config for both http and https in one web.config? и How do you setup HTTP and HTTPS WCF 4 RESTful services?
Примечание: В IIS, это два веб-сайтов, один прослушивает HTTP, а другой на HTTPS. Оба обмен и тот же код в физической папке
UPDATE: как сейчас, я удалил конечные точки, и это работает. Но мое беспокойство заключается в удалении endpoing, настроенного с помощью behaviourConfiguration, не очень отличное решение для меня.
Это работает как для HTTP & HTTPS
<services>
<service behaviorConfiguration="MyServiceBehaviour" name="MyService.Lookups">
</service>
</services>
с 'httpsGetEnabled =" true "' должен быть URL-адрес 'https', но вы не определили его. –