我正在使用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正常运行,我需要做些什么?
答案 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提供此工具。
无论哪种方式,您都可以验证主机标头是否占用,因为浏览器中.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>