2016-06-17 2 views
0

Моя веб-служба на основе http работает нормально, и меня попросили переместить ее на https (сертификаты и прочее на IIS уже выполнены).Перемещение WCF на HTTPS

Но я полностью зациклен на том, что мне нужно сделать. Все веб-сайты, как представляется, показывают вам, какие изменения внесены в файл web.config, но когда я проверяю мой, это не что-то похожее (например, нет элемента службы), и ни один из сайтов не упоминал, какие изменения в конфигурации клиента вы и все они датированы 5 лет назад или более.

Когда я проверяю свой конфигурационный файл клиента, который вызывает веб-сервис, у него, похоже, есть половина записей конфигурации, которые должны быть в новом web.config на сервере.

Может ли кто-нибудь помочь?

Файл конфигурации CLIENT.

<configuration> 
    <system.serviceModel> 
    <bindings> 
      <basicHttpBinding> 
       <binding name="BasicHttpBinding_IMyService" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" useDefaultWebProxy="false" /> 
      </basicHttpBinding> 
     </bindings> 
    <client> 
     <endpoint address="http://example.com/TestService/TestService.svc" binding="basicHttpBinding" 
      bindingConfiguration="BasicHttpBinding_IMyService" contract="Service.IMyService" 
      name="BasicHttpBinding_IMyService" /> 
    </client> 
    </system.serviceModel> 
</configuration> 

SERVER Web.config

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"> 
      <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 
    </system.serviceModel> 
+0

У вас есть .svc-файл? Есть ли какая-либо конфигурация, в которой вы определяете контракт на услугу? – Lucian

+0

это что-то вроде <% @ ServiceHost Language = "C#" Service = "MyInterface.MyService" CodeBehind = "MyService.svc.cs"%> –

+0

У вас есть тег где-то в файле конфигурации на сервере? – Lucian

ответ

0

Я изменил вам настройки, так что похоже на мои настройки. Вы должны использовать значение, которые являются специфическими для вашего сервера:

Я добавил

<security mode="Transport"></security> 

и

<serviceMetadata httpsGetEnabled="true" httpGetEnabled="true"/> 
      <serviceCredentials> 
      <serviceCertificate findValue="<thumbprint>" storeLocation="LocalMachine" 
      storeName="My" x509FindType="FindByThumbprint" /> 
      </serviceCredentials> 

это необходимо для указания сертификата и что следует использовать режим безопасности транспорта.

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"> 
      <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 

     <security mode="Transport"></security> 

     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 

      <serviceMetadata httpsGetEnabled="true" httpGetEnabled="true"/> 
      <serviceCredentials> 
      <serviceCertificate findValue="<thumbprint>" storeLocation="LocalMachine" 
      storeName="My" x509FindType="FindByThumbprint" /> 
      </serviceCredentials> 

      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 
    </system.serviceModel> 

убедитесь, что вы изменили значение на свой отпечаток сертификата. Вы также должны убедиться, что сертификат находится в правильном хранилище.

Это просто угадывание с моей стороны. Возьмите это с солью, потому что я не тестировал ее с вашей конфигурацией.

+0

Спасибо, отлично, я проведу его. Как насчет файла конфигурации клиента? –

+0

также, что это за servicemetadata? он не упоминается на https://msdn.microsoft.com/en-us/library/ms733932%28v=vs.110%29.aspx спасибо. –

+0

servirceMetaData: https://msdn.microsoft.com/en-us/library/ms731317(v=vs.110).aspx У вас есть это в вашем conf также, я просто добавил httpsGetEnabled = true. О стороне клиента: я просто добавляю ссылку на службу в конфигурацию HTTPS. VS обрабатывает остальное. – Lucian

Смежные вопросы