【问题标题】:SSL WCFs with custom binding具有自定义绑定的 SSL WCF
【发布时间】:2009-07-15 01:58:42
【问题描述】:

有没有人尝试过在 WCF Web 服务中使用 SSL 自定义绑定?我已经看到了许多关于如何使用 basicHttpBinding 和 wsHttpBinding 执行此操作的示例,但是对于 customBinding,等效项总是失败。具体来说,我目前正在使用的(迄今为止最成功的配置)看起来像这样:

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true">
    </serviceHostingEnvironment>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceBehavior">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <customBinding>
        <binding name="binaryHttps">
          <binaryMessageEncoding />
          <httpsTransport />
        </binding>
      </customBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="MyServiceBehavior" name="MyService">
        <host>
          <baseAddresses>
            <add baseAddress="https://(myserver)/"/>
          </baseAddresses>
        </host>
        <endpoint address=""
      binding="customBinding" bindingConfiguration="binaryHttps"
      contract="MyService" />
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>

这实际上允许我们从 Web 访问服务,获取它的 WSDL 并在 Visual Studio 中添加服务引用,但是当我们实际尝试在 Silverlight-3 应用程序中使用它时,它只是无限期地坐在那里等待响应并且永远不会超时。在我的机器上运行一段时间后,它实际上最终给我带来了内存不足的问题(6GB 内存)。奇怪的是,这一切在开发环境中(严格使用 VS 应用程序主机)完美地工作(并且仍然如此),直到我们尝试将它部署到具有真正 SSL 证书的实际服务器上,所有这些问题弹出来。

我已经相当详尽地搜索了这个问题的解决方案,但到目前为止还没有找到任何东西,并且几乎尝试了所有方法 - 有没有人以前遇到过这个问题并解决了这个问题?

【问题讨论】:

    标签: wcf configuration silverlight-3.0


    【解决方案1】:

    所以问题根本不在于我们的 web.config,而与 IIS 7 和通配符 SSL 证书的问题有关。

    也就是说,IIS 7 不允许您在将 IP 绑定到 SSL 连接和证书时指定主机名。我猜这是因为它需要一个非通配符 SSL 证书,它可以从中提取显式主机名。我们最终要做的是进入 {WindowsDir}\{System32}\{Inetsrv}\{config} 中的 applicationHost.config 文件并找到我们的 Web 服务绑定 IP 地址的条目并将其显式更改为 (ip ):(主机名)。然后它甚至可以在 IIS 配置 GUI 中正确显示。

    完成此操作后,我们将完全关闭所有服务器上除 SSL 通道外的所有通道,一切正常。

    感谢上帝,一切都结束了!

    【讨论】:

      【解决方案2】:

      AFAIK,使用 SSL 存在性能问题。我们正在使用 WCF behiovr 进行身份验证。我们使用的方式是 Silverlight => ASP.NET => WCF。我们在 Silverlight 和 WCF 中配置了 Endpoint 行为。每当我们调用服务时,我们都会传递令牌进行身份验证。

      你是说可以在 Silverlight 的 ClientConfig 中使用自定义绑定?

      【讨论】:

      • 好吧,我们在 Silverlight 3 库中的代码中进行绑定,而不是在 ClientConfig 文件中,但是是的,在本地机器上一切正常。直到部署才出现任何问题。
      • 而且,为了确认一下,我能够让服务在 http 模式下在独立服务器上通过自定义绑定完美运行,但这对我们的应用程序来说并不适用。当您尝试切换到 https 时,问题就会出现。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2020-05-19
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      相关资源
      最近更新 更多