0

我正在尝试在 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

4 回答 4

0

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

于 2009-07-27T19:55:07.003 回答
0

忽略我之前的回答,我在想 wsHttpBinding 不是 webHttpBinding。

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

https://machineName/服务名称

于 2009-07-27T20:00:36.883 回答
0

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

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

不是 100% 确定这是否适用于 webHttpBinding,但试一试!

马克

于 2009-07-27T21:24:48.647 回答
0

请记住,除了正确的 WCF 配置之外,您还需要配置 IIS 属性以在其上启用 SSL(包括为 SSL 设置正确的 X.509 证书)。文档有一些关于如何做到这一点的体面信息。

于 2009-07-28T00:16:11.243 回答