使用basicHttpBinding时使HTTPS工作

时间:2011-05-23 03:15:19

标签: .net asp.net wcf binding

我正在使用WCF4并且无法通过https获取服务

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

  

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

我的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正常运行,我需要做些什么?

3 个答案:

答案 0 :(得分:9)

试试这个:

<system.serviceModel>
  <bindings >

    <webHttpBinding>
      <binding name="webBinding">
        <security mode="Transport">
        </security>
      </binding>
    </webHttpBinding>

  </bindings>

  <services>
    <service ...>
      <endpoint bindingConfiguration="webBinding" .../>
    </service>
  </services>

</system.serviceModel>

答案 1 :(得分:2)

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

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

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

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

  

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

     

svcutil.exe https://AppServerWitHIIS/VirtualDirectory/Your.svc?WSDL

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

  

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

     

svcutil.exe https://www.yoursslcertsite.com/your.svc?WSDL

答案 2 :(得分:0)

我遇到了类似的情况,我删除了HTTP绑定,只留下了IIS中的HTTPS绑定。该网站立即停止处理上述错误。 要解决此问题,请在web.config

中的system.servicemodel中添加以下内容
<protocolMapping>
      <add binding="basicHttpsBinding" scheme="https"/>
    </protocolMapping>