0

我正在尝试访问需要身份验证的 Soap Web 服务 (HTTP)。我正在使用 WCF 来使用该服务。我收到错误消息,因为 HTTP 请求未经客户端身份验证方案“基本”授权。从服务器收到的身份验证标头是“Basic realm="weblogic"”。

任何帮助表示赞赏,谢谢。

这就是我的代码的样子:

var binding = new BasicHttpBinding();               
            binding.MaxBufferSize = 2147483647;

            binding.MaxReceivedMessageSize = 2147483647;
            binding.Security = new BasicHttpSecurity
            {
                Mode = BasicHttpSecurityMode.TransportCredentialOnly,
                Transport = new HttpTransportSecurity()
                {
                    ClientCredentialType = HttpClientCredentialType.Basic
                }
            };
            var endpoint = new System.ServiceModel.EndpointAddress(configuration["webserviceAddres"]);
            servicio = new ConsultaMontosOperadosFondosClient(binding, endpoint);
            servicio.ClientCredentials.UserName.Password = MyPass;
            servicio.ClientCredentials.UserName.UserName = MyUser;
4

2 回答 2

1

如果服务不是通过 https,那么尝试添加领域:(我不确定它是否是 weblogic,只是按照您在错误中发布的内容)

binding.Security = new BasicHttpSecurity
{
    Mode = BasicHttpSecurityMode.TransportCredentialOnly,
    Transport = new HttpTransportSecurity()
    {
        ClientCredentialType = HttpClientCredentialType.Basic,
        Realm = "weblogic"
    }
};
于 2018-12-07T17:10:38.833 回答
0

在 IIS 身份验证模块中启用基本身份验证,然后提供用户名/密码。

BasicHttpBinding binding = new BasicHttpBinding();
            binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
            binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
            ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient(binding, new EndpointAddress("http://10.157.13.69:8001/webservice1.asmx"));
            client.ClientCredentials.UserName.UserName = "administrator";
            client.ClientCredentials.UserName.Password = "abcd1234!";

如果问题仍然存在,请随时告诉我。

于 2018-12-12T10:33:44.337 回答