找不到与端点的方案https匹配的基址

时间:2014-08-25 08:50:30

标签: asp.net wcf silverlight-5.0

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="DataSoap" maxBufferSize="2147483647"  maxReceivedMessageSize="2147483647">
                <security mode="Transport" />
            </binding>
        </basicHttpBinding>
        <customBinding>
            <binding name="CustomBinding_GetData">
                <binaryMessageEncoding />
                <httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
            </binding>
        </customBinding>
    </bindings>
    <client>
        <endpoint address="https://localhost/MyApp.Web/Webservice/Data.asmx"
            binding="basicHttpBinding" bindingConfiguration="DataSoap"
            contract="ServiceReference1.DataSoap" name="DataSoap" />

        <endpoint address="https://localhost/MyApp.Web/Webservice/GetData.svc"
            binding="customBinding" bindingConfiguration="CustomBinding_GetData"
            contract="GetData.GetData" name="CustomBinding_GetData" />           
    </client>        
</system.serviceModel>

大家好,上面是我的silverlight应用程序ServiceReferences.ClientConfig文件。该站点配置为通过https访问。从上面的文件,我想我已经正确配置了一切。我可以成功地从本地开发环境浏览我的服务,但在我的QA环境中部署应用程序后,浏览到该服务会给我以下错误。

  

无法找到与绑定CustomBinding的端点匹配方案https的基址。注册的基地址方案是[http]。

任何我为什么仍然选择http作为注册的基地址方案只选择QA但不在我的本地开发环境中?

修改 @Brian,谢谢你的回复,让我给你更多的信息,以防它给出一个清晰的图片。

该站点配置为SSL,但SSL证书安装在我无权访问的负载均衡器上。 现在从错误消息,似乎我必须在IIS中配置主机标头和安全站点绑定,但是当从负载均衡器安装和管理SSL证书时,我真的可以从IIS执行此操作吗?

IT看起来像https绑定是缺少的,因为我可以从我的开发机器重现完全相同的错误消息,如果我暂时删除我在此链接后创建的https绑定。

http://weblogs.asp.net/scottgu/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates

因此,我认为我需要在负载均衡器上而不是在IIS中使用https绑定,因为该站点在IIS中没有自己的SSL证书吗?

1 个答案:

答案 0 :(得分:1)

我遇到了这个问题。基本上,与证书关联的URL标识与它所来自的网站的URL不匹配...至少这是我的问题。

我能够通过专门设置(在代码中)System.ServiceModel.EndPointIdentity到我连接的URL来解决此客户端安全检查。

有一个CreateDNSIdentity()函数,您可以向其提供您正在访问的网站的URL。

以下是MS文档的链接:http://msdn.microsoft.com/en-us/library/system.servicemodel.endpointidentity.creatednsidentity(v=vs.110).aspx

我不确定如何在不使用代码的情况下配置它。

String sFullURL = "http://MyDNSServer:8001/SomeService"
String sDNS = "MyDNSServer";
System.ServiceModel.EndpointAddress Endpoint;
System.ServiceModel.EndpointIdentity Identity = default (System.ServiceModel.EndpointIdentity);
Identity = System.ServiceModel.EndpointIdentity.CreateDnsIdentity(sDNS);
EndPoint = new System.ServiceModel.EndpointAddress(new Uri(sFullURL), Identity);

<强>更新 好的,假设你有一个Web服务,这个Web服务的公共地址是IP https:// 10.134.116.161:8001/MyService。下面的证书将通过客户端证书验证检查,您不会收到错误。但是,如果下图中显示的此证书部署在公共URL https:// XZYCorp:8001 / MyService上,您将收到该错误。因此,您需要覆盖客户端证书验证检查或更改LB上的证书。

enter image description here