我正试图为这个网站使用 https 和 http。这个网站有 .svc 文件,它们充当 REST 服务,并从 JavaScript 中调用。
我的配置:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="AjaxBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="MyServiceBehaviour">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="MyServiceBehaviour" name="MyService.Lookups">
<endpoint address="" behaviorConfiguration="AjaxBehavior"
binding="webHttpBinding" bindingConfiguration="httpWebBinding" contract="MyService.Lookups" >
</endpoint>
<endpoint address="" behaviorConfiguration="AjaxBehavior"
binding="webHttpBinding" bindingConfiguration="httpsWebBinding" contract="MyService.Lookups" >
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="httpsWebBinding">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" />
</security>
</binding>
<binding name="httpWebBinding">
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" />
</security>
</binding>
</webHttpBinding>
</bindings>
</system.serviceModel>
浏览https://myserver/services/Lookups.svc/Hello,结果为
找不到与 WebHttpBinding 绑定的端点的 http 基址。已注册的基址方案为 [https]
浏览http://myserver/services/Lookups.svc/Hello,结果为
找不到与 WebHttpBinding 绑定的端点的 https 基址。已注册的基址方案为 [http]
如果我移除任何一个端点,它将正常工作。例如,删除使用bindingConfiguration="httpWebBinding"
配置的端点可用于 HTTPS,
如何使其同时在 HTTP 和 HTTPS 下工作?目前,我只能通过移除一个端点来使用 http 或 https。
参考如何将 WCF 服务配置合并为一个 web.config 中的 http 和 https?和如何设置 HTTP 和 HTTPS WCF 4 RESTful 服务?
注意:在 IIS 中,有两个网站,一个监听 http,另一个监听 https。它们共享同一物理文件夹中的代码。
更新:目前,我移除了端点并且它可以工作。但是我担心移除配置有 behaviourConfiguration 的端点并不是最好的解决方案。
这适用于 http 和 https
<services>
<service behaviorConfiguration="MyServiceBehaviour" name="MyService.Lookups">
</service>
</services>
httpsGetEnabled="true"
,必须有一个https
的网址,但是你没有定义任何一个。 - Amit Kumar Ghosh