连接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"}
您没有使用安全模式进行传输。你需要添加
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证书。