我在没有启用SSL的情况下在服务器上运行我的WCF服务,现在我将其移动到启用了SSL的服务并且我收到以下错误:
无法使用绑定BasicHttpBinding找到与端点的scheme http匹配的基址。注册的基地址方案是[https]。
以下是我的设置:
<bindings>
<basicHttpBinding>
<binding name="basicHTTP">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows">
</transport>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="basicBehavior" name="ProjectName.MyService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHTTP" contract="ProjectName.IMyService"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="basicBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
如何解决此错误?
答案 0 :(得分:0)
您需要为basicHttps定义绑定。这是一个非常简单的设置,适用于SSL:
<system.serviceModel>
<bindings>
<basicHttpsBinding>
<binding name="BasicHttpBinding_IMyService" />
</basicHttpsBinding>
</bindings>
<client>
<endpoint
name="BasicHttpBinding_IMyService"
address="https://MyURL/MyService.svc/soap/"
binding="basicHttpsBinding"
bindingConfiguration="BasicHttpBinding_IMyService"
contract="ClientServiceReference.IMyService" />
</client>
</system.serviceModel>
注意: 端点需要定义,其网址为 https 。
此外,请确保在生产环境中,您没有将异常详细信息发送回调用方(这将被视为系统中的安全漏洞,因为异常可能会向黑客泄露太多信息)。您必须更改此行:
<serviceDebug includeExceptionDetailInFaults="false"/>
答案 1 :(得分:0)
通过将安全模式指定为Transport
并使用webHttpBinding