使用WebHttpBinding无法访问AWS ELB后的HTTPS端点问题
解决AWS ALB HTTPS访问WCF服务的配置错误
尝试通过HTTPS访问AWS应用负载均衡(ALB)后端Windows服务器上的WCF服务时,触发以下错误:
"Could not find a base address that matches scheme https for the endpoint with binding WebHttpBinding. Registered base address schemes are [http]"
错误原因
这个问题的核心是:你的WCF配置要求端点使用HTTPS绑定,但后端服务器仅注册了HTTP基地址;同时结合AWS ALB的架构,ALB通常会在负载均衡层终止SSL连接,后端Windows服务器实际接收的是HTTP请求,不需要直接配置HTTPS绑定。
具体配置修改步骤
1. 调整webHttpBinding的安全模式
移除绑定中的Transport安全配置(或设置为None),适配ALB转发的HTTP请求:
<bindings> <webHttpBinding> <binding name="BindingNew"> <!-- 移除原有的Transport安全块,或替换为以下配置 --> <!-- <security mode="None"></security> --> </binding> </webHttpBinding> </bindings>
2. 更新服务元数据配置
如果需要通过HTTPS访问服务元数据,修改serviceMetadata的httpsGetEnabled为True:
<behavior name="NewBehaviour"> <serviceMetadata httpsGetEnabled="True" httpGetEnabled="True" /> <serviceDebug includeExceptionDetailInFaults="False" /> </behavior>
3. 适配元数据端点(可选)
若要通过HTTPS访问元数据,将mex端点的绑定改为mexHttpsBinding:
<services> <service name="FFCService.FFCService" behaviorConfiguration="NewBehaviour"> <endpoint address="" binding="webHttpBinding" bindingConfiguration="BindingNew" behaviorConfiguration="webHttp" contract="FFCService.IFFCService"/> <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> </service> </services>
4. 检查IIS站点绑定
确保Windows服务器上的IIS站点已绑定HTTP端口(默认80),因为ALB会将HTTPS请求转发为HTTP到后端。无需在IIS上配置SSL证书(除非你需要后端直接暴露HTTPS)。
验证操作
- 保存修改后的
web.config,重启IIS站点 - 通过ALB的HTTPS域名访问服务端点,确认错误消失
- 若配置了元数据,可访问
https://<ALB域名>/mex验证元数据是否正常返回
内容的提问来源于stack exchange,提问作者Stuckerstick
相关产品推荐
相关产品推荐

