Как сделать Сервис WCF, который является только HTTP, а также HTTPS, не создавая новых или не ломая существующих клиентов - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть служба WCF, которая использует basicHttpBinding.Это выставляется как HTTP для многих клиентов.

Теперь наше требование состоит в том, чтобы предоставить эту услугу как HTTPS нескольким новым клиентам, в то время как мы не должны разбивать существующие клиенты, которые используют http.

Я пришелчерез обнаружение типа безопасности программным путем и затем разоблачение, но есть ли другой лучший и легкий способ сделать это?Просто с настройкой конечных точек и т. Д.?

Я довольно новичок в этих областях, пожалуйста, помогите с примером

1 Ответ

0 голосов
/ 21 ноября 2018

Да, есть лучшее решение, как вы упомянули, с настройкой, которую я сделал два дня назад для некоторых наших сервисов.

Добавить 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...