【问题标题】:Getting HTTPS to work when using basicHttpBinding使用 basicHttpBinding 时让 HTTPS 工作
【发布时间】:2011-05-23 03:15:18
【问题描述】:

我正在使用 WCF4,但无法让服务通过 https 运行

我已经创建了一个 wcf 服务并部署到服务器,它在 http 上工作正常。一旦我将 web.config 端点地址更改为 https,我就会收到错误

服务“NS.WebWCF.BusinessV1”的应用程序(非基础设施)端点为零。这可能是因为没有为您的应用程序找到配置文件,或者因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在服务元素中没有定义端点。

我的 web.config 看起来像

 <services>
  <service name="NS.WebWCF.Business_v1">
    <endpoint address="https://mydomain.com/business/v1/BusinessV1.svc" binding="basicHttpBinding" bindingConfiguration="" contract="NS.WebWCF.IBusinessV1" listenUri="/" isSystemEndpoint="true">
     </endpoint>
  </service>

我已将 IIS 设置为需要 SSL。但是我收到上述错误。

我需要做什么才能让 https 工作?

【问题讨论】:

    标签: .net asp.net wcf binding


    【解决方案1】:

    试试这个:

    <system.serviceModel>
      <bindings >
    
        <webHttpBinding>
          <binding name="webBinding">
            <security mode="Transport">
            </security>
          </binding>
        </webHttpBinding>
    
      </bindings>
    
      <services>
        <service ...>
          <endpoint bindingConfiguration="webBinding" .../>
        </service>
      </services>
    
    </system.serviceModel>
    

    【讨论】:

    • 我有一个类似的问题,不同的错误信息,解决方案是将安全模式设置为传输,因为我试图使用 Https。
    • 我发现这很有帮助:blog.adnanmasood.com/2008/07/16/… - 虽然在我的情况下只是更改 mode="Transport" 就可以了。
    【解决方案2】:

    您需要为 SSL 设置 IIS 主机头绑定。旧版本的 IIS 需要从命令行界面进行设置,更高版本通过 GUI 提供此工具。

    • 对于 IIS6,请检查 here
    • 对于 IIS7,请检查 here
    • 对于 IIS7.5,您应该能够简单地编辑 UI 的“绑定”部分中的值。

    无论哪种方式,您都可以验证主机标头是否被占用,因为浏览器中 .SVC 文件生成的 HTML 会发生变化。

    在绑定正确之前通过 HTTPS:// 访问时,它可能会读取如下内容:

    要测试此服务,您需要 创建一个客户端并使用它来调用 服务。您可以使用 命令行中的 svcutil.exe 工具 语法如下:

    svcutil.exe @987654323@

    在 IIS 中正确设置绑定后,它将显示:

    要测试此服务,您需要 创建一个客户端并使用它来调用 服务。您可以使用 命令行中的 svcutil.exe 工具 语法如下:

    svcutil.exe @987654324@

    【讨论】:

    • 嗨,Nate,是的,我已经正确设置了 SSL,因为我可以通过 https 访问测试 html 页面。我在 prod 服务器上没有 vs 设置,所以不确定如何运行 svcutil 工具
    • 您确定您已设置 SSL 主机标头绑定吗?即使使用不正确的 ssl 标头,当您在浏览器中访问时,该站点也是可见的,但是当服务尝试发送数据时,它最终会指向错误的端点。
    • 您可能必须修改现有的 SSL 绑定而不是添加它。虽然很危险,但最简单的方法是修改 ApplicationHost.config:learn.iis.net/page.aspx/124/…
    【解决方案3】:

    我在类似的情况下删除了 HTTP 绑定,只在 IIS 中留下了 HTTPS 绑定。该站点立即停止处理上述错误。 要解决此问题,请在 web.config 的 system.servicemodel 中添加以下内容

    <protocolMapping>
          <add binding="basicHttpsBinding" scheme="https"/>
        </protocolMapping>
    

    【讨论】:

      猜你喜欢
      • 2013-03-03
      • 1970-01-01
      • 2012-05-02
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 2011-04-11
      相关资源
      最近更新 更多