代码之家  ›  专栏  ›  技术社区  ›  Daniel

在webHttp WCF服务上设置传输级别安全性

  •  0
  • Daniel  · 技术社区  · 17 年前

    我试图在webHttp绑定WCF服务上设置传输级安全性我当前的配置如下所示

     <system.serviceModel>
    <client>
      <endpoint binding="webHttpBinding" bindingConfiguration="webHttp"
        contract="PrimeStreamInfoServices.IService1" name="Client" />
    </client>
    <bindings>
    <webHttpBinding>
      <binding name="webHttp" maxBufferPoolSize="1500000"  maxReceivedMessageSize="1500000"  maxBufferSize="1500000">
      <security mode="Transport">
          <transport clientCredentialType="None"
    
                proxyCredentialType="None"
                realm="string" />
      </security>
      </binding>
    
    </webHttpBinding>
    </bindings>
    <services>
    
      <service name="PrimeStreamInfoServices.Service1" behaviorConfiguration="PrimeStreamInfoServices.Service1Behavior">
        <!-- Service Endpoints -->
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="webHttp" contract="PrimeStreamInfoServices.IService1">
          <!-- 
              Upon deployment, the following identity element should be removed or replaced to reflect the 
              identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
              automatically.
          -->
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="PrimeStreamInfoServices.Service1Behavior">
    
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <diagnostics>
    
      <messageLogging logMalformedMessages="true"  logMessagesAtServiceLevel="true"
        logMessagesAtTransportLevel="true" />
    
    </diagnostics>
    

    但是,当我运行服务时,会出现异常: 找不到与绑定WebHttpBinding的终结点的方案https匹配的基址。注册的基址方案为[http]。

    我知道我错过了一些东西,我一直在尝试各种各样的事情,我想不出来,有人知道我该做什么吗?

    4 回复  |  直到 7 年前
        1
  •  0
  •   blowdart    17 年前

    是-使用合适的证书切换到HTTPS。在HTTP的情况下,传输安全由SSL通道提供。您不能在纯HTTPS上使用WS*传输安全性

        2
  •  0
  •   Shiraz Bhaiji    17 年前

    忽略我之前的回答,我认为wsHttpBinding不是webHttpBinding。

    您用来调用必须以https开头的服务的地址。

    https://machineName/ServiceName

        3
  •  0
  •   marc_s MisterSmith    17 年前

    您可以尝试添加一个基址(在 <host> 您的服务配置的元素)哪个是https?是否在代码中添加一个(或多个)基址?

    <service name="PrimeStreamInfoServices.Service1" 
             behaviorConfiguration="PrimeStreamInfoServices.Service1Behavior">
       <host>
          <baseAddresses>
             <add baseAddress="https://localhost:8080/YourService.svc" />
          </baseAddresses>
       </host>
       <!-- Service Endpoints -->
       <endpoint ......
    </service>
    

        4
  •  0
  •   tomasr    17 年前

    请记住,除了正确的WCF配置之外,还需要配置IIS属性以在其上启用SSL(包括为SSL设置正确的X.509证书)。这个 docs

    推荐文章