Да, есть лучшее решение, как вы упомянули, с настройкой, которую я сделал два дня назад для некоторых наших сервисов.
Добавить basicHttpBinding
, как показано ниже:
<basicHttpBinding>
<binding allowCookies="true" openTimeout="00:00:10" maxReceivedMessageSize="20000000">
<readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000" />
<security mode="None" />
</binding>
<binding name="secureBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
и сервисконечная точка:
<service name="ServiceName">
<endpoint address="rest" behaviorConfiguration="Rest.Behavior" binding="webHttpBinding" contract="System.Data.Services.IRequestHandler">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="rest" behaviorConfiguration="Rest.Behavior" binding="webHttpBinding" bindingConfiguration="secureBasicHttpBinding" contract="your service contract">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost/Service.svc"/>
</baseAddresses>
</host>
</service>
, а в IIS вам просто нужно добавить действительный сертификат и включить его, https
использовать secureBasicHttpBinding
и http
использовать базовый по умолчанию httpConfiguration
.
Iпроверили его раньше, пока какой-то клиент, использующий эту службу в https
, другие используют http
.
Совет:
В локальном режиме возникает ошибка при размещении служб WCF
Приведенный выше конфиг, поэтому я пришел к такому выводу, чтобы перевести этот конфиг в режим release
, а не в режим debug
, потому что https
включен на рабочем сервере.
, поэтому в конфиге release
есть что-то вроде(подлежит передаче после публикации):
<service name="ServiceName" xdt:Locator="Match(name)" xdt:Transform="Replace">
<endpoint address="rest" behaviorConfiguration="Rest.Behavior" binding="webHttpBinding" contract="System.Data.Services.IRequestHandler">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="rest" behaviorConfiguration="Rest.Behavior" binding="webHttpBinding" bindingConfiguration="secureBasicHttpBinding" contract="your service contract">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost/AAA/Service.svc"/>
</baseAddresses>
</host>
</service>