2016-01-13 2 views
0

У меня есть служба WCF REST, которая должна принимать исходный поток от клиента. Чтобы получить необработанный поток, я использую пользовательскую привязку в файле web.config. Служба работает нормально, если я установил ее для подключения по стандарту HTTP. Тем не менее, мне трудно заставить работать HTTPS.Конфигурация SSL для службы WCF REST с настраиваемыми привязками

Ручная адресация не поддерживается с защитой на уровне сообщений. Настройте привязку («CustomBinding», «http://tempuri.org/»), чтобы использовать безопасность транспорта или не выполнять ручную адресацию.

Ниже конфигурация я использую для HTTP:

<service behaviorConfiguration="LocalBehavior" name="RestService.CreditService"> 
    <endpoint address="" behaviorConfiguration="web" binding="customBinding" bindingConfiguration="RawReceiveCapable" contract="RestService.ICreditService" /> 
</service> 

<behavior name="LocalBehavior"> 
    <serviceMetadata httpGetEnabled="true" /> 
    <serviceDebug includeExceptionDetailInFaults="true" /> 
</behavior> 

<endpointBehaviors> 
    <behavior name="web"> 
     <webHttp /> 
    </behavior> 
</endpointBehaviors> 

<binding name="RawReceiveCapable"> 
    <webMessageEncoding webContentTypeMapperType="RestService.Data.RawContentTypeMapper, RestService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
    <httpTransport manualAddressing="true" maxReceivedMessageSize="524288000" 
      transferMode="Streamed" /> 
</binding> 

А вот конфигурация я использую для HTTPS:

<service behaviorConfiguration="SecureBehavior" name="RestService.CreditService"> 
     <endpoint address="basic" behaviorConfiguration="web" binding="customBinding" bindingConfiguration="RawReceiveCapable" name="httpsEndpoint" contract="RestService.ICreditService" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://sitcreditserviceszalecorp.cloudapp.net:3389/CreditService.svc" /> 
      <add baseAddress="https://sitcreditserviceszalecorp.cloudapp.net:443/CreditService.svc" /> 
      </baseAddresses> 
     </host> 
</service> 

<behavior name="SecureBehavior"> 
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" /> 
      <serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="true" includeExceptionDetailInFaults="true" /> 
</behavior> 

<binding name="RawReceiveCapable"> 
      <webMessageEncoding webContentTypeMapperType="RestService.Data.RawContentTypeMapper, RestService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
      <security authenticationMode="CertificateOverTransport" 
        requireSecurityContextCancellation ="true"> 
      </security> 
      <httpsTransport manualAddressing="true" maxReceivedMessageSize="524288000" transferMode="Streamed" authenticationScheme="Anonymous" requireClientCertificate="false" /> 
</binding> 

Может кто-нибудь указать на то, что я Неправильно? Благодарю.

ответ

-1

У меня была такая же проблема, пока я не наткнулся на статью, предлагающую удалить элемент безопасности. Это сработало для меня.

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