连接WCF服务时遇到问题

本文关键字:遇到 问题 服务 WCF 连接 | 更新日期: 2023-09-27 18:15:18

我正在custom binding, getting end point address from config下面创建,然后尝试向WCF服务发送请求。

BasicHttpBinding binding = new BasicHttpBinding();
binding.MaxReceivedMessageSize = int.MaxValue;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
var endpointAddress = "";
ClientSection clientSection = (ClientSection)ConfigurationManager.GetSection("system.serviceModel/client");
for (int i = 0; i < clientSection.Endpoints.Count; i++)
{
  if (clientSection.Endpoints[i].Name == "HTTPS_Port")
     endpointAddress = clientSection.Endpoints[i].Address.AbsoluteUri;
}
EndpointAddress address = new EndpointAddress(endpointAddress);
MyWCFService svc = new MyWCFService(binding, address);

我得到以下错误

提供的URI方案'https'无效;预期"http"。'r'n参数名称:via"}

连接WCF服务时遇到问题

您没有使用安全模式进行传输。你需要添加

    binding.Security.Mode = BasicHttpSecurityMode.Transport;

 According to definition =>  

//Security is provided using HTTPS. The service must be configured with SSL
    //     certificates. The SOAP message is protected as a whole using HTTPS. The service
    //     is authenticated by the client using the service’s SSL certificate. The client
    //     authentication is controlled through the System.ServiceModel.HttpTransportSecurity.ClientCredentialType.

不要使用

binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;

此安全模式只能用于基于http的客户端。

根据微软此模式不提供消息完整性和机密性。它提供了

//     only HTTP-based client authentication. Use this mode with caution. It should
//     be used in environments where the transfer security is being provided by
//     other means (such as IPSec) and only client authentication is provided by
//     the Windows Communication Foundation (WCF) infrastructure.

注意:托管此服务需要SSL证书。