У меня есть сайт, который должен иметь возможность создавать http и https-соединение. У меня установлен IIS, поэтому он принимает https как для SOAP, так и для REST-запросов, это работает.WCF - Http и https на SOAP и REST
Моя проблема заключается в том, что клиенты, у которых нет https, могут использовать мой сайт. Если они не имеют его я удалить сайт связывания для https:
После того как я делаю это я получаю следующее исключение при доступе к сайту: «Не удалось найти базовый адрес, который соответствует схеме HTTP для конечной точки с связывание»
Моя web.config выглядит следующим образом:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding" messageEncoding="Text">
</binding>
<binding name="basicHttpsBinding" messageEncoding="Text">
<security mode="Transport" />
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding name="webHttpBinding">
</binding>
<binding name="webHttpsBinding">
<security mode="Transport" />
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="XXX.XXX">
<endpoint address="rest" behaviorConfiguration="RestBehavior" binding="webHttpBinding"
bindingConfiguration="webHttpBinding" contract="XXX.IXXX">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="rest" behaviorConfiguration="RestBehavior" binding="webHttpBinding"
bindingConfiguration="webHttpsBinding" contract="XXX.IXXX">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="" behaviorConfiguration="XXXBehavior" binding="basicHttpBinding"
bindingConfiguration="basicHttpBinding" contract="XXX.IXXX">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="" behaviorConfiguration="XXXBehavior" binding="basicHttpBinding"
bindingConfiguration="basicHttpsBinding" contract="XXX.IXXX">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" name="Mex" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="XXXBehavior">
<webHttp/>
</behavior>
<behavior name="RestBehavior">
<webHttp helpEnabled="true" defaultBodyStyle="Bare" defaultOutgoingResponseFormat="Json"
automaticFormatSelectionEnabled="false" faultExceptionEnabled="true" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
Что я делаю неправильно?
Что значит «клиенты, у которых нет https»? –
@GlenThomas Приложение, которое я разрабатываю, может быть установлено на разных серверах, некоторые из клиентов не имеют сертификата https для использования. – DannyBiezen
Я вижу. Они могут использовать самоподписанный сертификат. Если приложение нуждается в безопасном соединении, то оно лучше, чем ничего –