2016-01-13 62 views
0

我有一个WCF REST服务必须接受来自客户端的原始输入流。为了接收原始流,我在我的web.config文件中使用了自定义绑定。如果我将它设置为通过标准HTTP进行连接,该服务可以正常工作。但是,我很难让它通过HTTPS工作。带定制绑定的WCF REST服务的SSL配置

手动寻址不支持消息级安全性。配置绑定('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

我遇到同样的问题,直到我遇到一篇文章,建议删除安全元素。这对我有效。