2017-01-23 2 views
0

Я реализую службу WCF, которая должна работать с объектами Json. Это работает до сих пор. Теперь я хочу, чтобы служба принимала только https, поэтому нет http.Служба Wcf, реализующая только Json и https

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

Это моя конфигурация для службы:

<?xml version="1.0"?> 
<configuration> 

    <appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
    </appSettings> 

    <system.web> 
    <compilation debug="true" targetFramework="4.5.2" /> 
    <httpRuntime targetFramework="4.5.2"/> 
    </system.web> 

    <system.serviceModel> 
    <services> 
     <service behaviorConfiguration="serviceBehavior" name="SMApi.SApi"> 
     <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" 
      bindingConfiguration="" contract="SMApi.ISApi" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <!--/--> 
     <behavior name="serviceBehavior"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     <!--/--> 
     <behavior> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
     </behavior> 
     </serviceBehaviors> 
     <!--/--> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
     <!--/--> 
    </behaviors> 
    <protocolMapping> 
     <add binding="basicHttpsBinding" scheme="https"/> 
    </protocolMapping> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 

    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <directoryBrowse enabled="false"/> 
    </system.webServer> 

</configuration> 
+0

Попробуйте установить режим безопасности для транспортировки на 'webHttpBinding'. Для этого вам нужно добавить раздел конфигурации привязки в вашу конфигурацию. – Tim

ответ

0

Попробуйте добавить конфигурацию связывания для <webHttpBinding> и установки режима безопасности транспортировки. Вам нужно будет явно настроить конфигурацию привязки на конечную точку.

<bindings> 
    <webHttpBinding name="SMApiWebhttpBinding"> 
    <security mode="Transport" /> 
    </webHttpBinding> 
</bindings> 

Затем в конечной точке ссылки на указанную выше конфигурацию связывания с помощью атрибута binding Configuration:

<service behaviorConfiguration="serviceBehavior" 
     name="SMApi.SApi"> 
    <endpoint address="" behaviorConfiguration="web" 
      binding="webHttpBinding" 
      bindingConfiguration="SMApiWebHttpBinding" 
      contract="SMApi.ISApi" /> 
Смежные вопросы