1

我一直在玩通过 SSL 和负载平衡处理 WCF 的乐趣和游戏:(

当前的立场是,我们似乎到达了服务器,但它不喜欢配置中的端点。

任何人都可以建议吗?

客户端配置。

<system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IWorkflowAPI" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="TransportWithMessageCredential">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://ourserver.com/API/workflow.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IWorkflowAPI" contract="Warms.IWorkflowAPI"
                name="BasicHttpBinding_IWorkflowAPI" />
        </client>
    </system.serviceModel>

网络服务网络配置。

 <system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
      <behavior name="Originator Secured">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
        <serviceCredentials>
          <userNameAuthentication userNamePasswordValidationMode="Custom" />
        </serviceCredentials>
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <services>
    <service name="xx.xx.Web.UI.API.Workflow" behaviorConfiguration="Originator Secured">
      <endpoint address="https://ourserver/API/workflow.svc" binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IWorkflowAPI" contract="xx.xx.Web.UI.API.IWorkflowAPI"
      name="BasicHttpBinding_IWorkflowAPI"  listenUri="/" />
    </service>
  </services>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  <bindings>
    <basicHttpBinding>
           <binding name="BasicHttpBinding_IWorkflowAPI" closeTimeout="00:01:00"
                        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                        allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                        useDefaultWebProxy="true">
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        <security mode="TransportWithMessageCredential">
          <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
          <message clientCredentialType="UserName" algorithmSuite="Default" />
        </security>
      </binding>
    </basicHttpBinding>
    <wsHttpBinding>
      <binding name="Workflow API Binding">
        <security mode="TransportWithMessageCredential">
          <transport clientCredentialType="None" />
          <message clientCredentialType="UserName" />
        </security>
      </binding>
    </wsHttpBinding>
    <customBinding>
      <binding name="CustomHttpBinding">
        <security allowInsecureTransport="True">
        </security>
        <httpTransport />
      </binding>
    </customBinding>
  </bindings>
</system.serviceModel>
4

1 回答 1

2

也许您的负载均衡器没有使用 SSL 连接到真实的 Web 服务器。启用传输安全后,您的 WCF 服务将不会在端口 80 上响应,只会在 443 上响应。我认为您的选择是:1. 让负载均衡器在其自身和 Web 服务器之间重新协商 SSL 2. 在您的 WCF 中关闭传输安全配置并仅使用消息安全性,将 SSL 留给负载均衡器执行。

于 2012-08-30T14:47:52.860 回答