我在消费肥皂网时会出现此错误。我在谷歌搜索时尝试了许多建议,例如:
<security mode="Transport">
<transport clientCredentialType="Certificate" proxyCredentialType="None" realm="weblogic" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
Web服务端点是https的,这是我的C#代码:
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
basicHttpBinding.Security.Mode = BasicHttpSecurityMode.Transport;
CustomerPortTypeClient client = new CustomerPortTypeClient(basicHttpBinding,
new EndpointAddress("https:......."));
client.ClientCredentials.UserName.UserName = ConfigurationManager.AppSettings["username"].ToString();
client.ClientCredentials.UserName.Password = ConfigurationManager.AppSettings["userpwd"].ToString();
client.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2(ConfigurationManager.AppSettings["servercertfilepath"].ToString());
当我评论行basicHttpBinding.Security.Mode =BasicHttpSecurityMode.Transport;
时,返回消息会更改,我得到:détails:提供的URI方案" HTTPS"无效;预期的" HTTP"。参数名称:via。
任何建议或建议将不胜感激。
对于那些遇到相同问题的人。这是使用的代码通过:
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.Security.Mode = BasicHttpSecurityMode.Transport;
basicHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
basicHttpBinding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
basicHttpBinding.Security.Transport.Realm = "weblogic";
basicHttpBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate;
CustomerPortTypeClient client = new CustomerPortTypeClient(basicHttpBinding,
new EndpointAddress("https:....."));
client.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2(ConfigurationManager.AppSettings["servercertfilepath"].ToString());
client.ClientCredentials.UserName.UserName = ConfigurationManager.AppSettings["username"].ToString();
client.ClientCredentials.UserName.Password = ConfigurationManager.AppSettings["userpwd"].ToString();