从服务器收到的身份验证 header.. BASIC - WFC - NET CORE

The authentication header received from the server.. BASIC - WFC - NET CORE

我使用 WCF(连接服务)和 .NET CORE,我想调用 wfc 服务并发送 xml... 但是当执行服务时, 这抛出下一个异常

"The authentication header received from the server was 'Basic realm="AXIS"'."

当我 运行 SOAP UI 中的服务时,我分配了基本授权选项并且它工作得很好......但是在这部分我不知道如何设置类型授权

我也没有任何配置 xml 文件,只有一个名为 ConnectedService.json

的 json

代码:

var endpoint = new TestService.WebTest_Service.EndpointConfiguration();
var service = new TestService.WebTest_Service(endpoint);

string strXml = _getXml();
TestService.XML xml = new TestService.XML();
xml.document = strXml;

service.ClientCredentials.UserName.UserName = "username";
service.ClientCredentials.UserName.Password = "password";

var result = service.invokeAsync(xml); // => THROW ERROR

首先确保账号和密码正确,也可以使用domain/user.

client.ClientCredentials.UserName.UserName = @"domain\username";
client.ClientCredentials.UserName.Password  = "password";

其次,请检查自动生成的服务端点。它应该位于 Reference.cs。构造函数中的参数是一个enum,表示应该使用哪个端点。

ServiceReference1.Service1Client client = new ServiceReference1.Service1Client(ServiceReference1.Service1Client.EndpointConfiguration.BasicHttpBinding_IService1);
client.ClientCredentials.UserName.UserName = "administrator";
client.ClientCredentials.UserName.Password = "abcd1234!";

最后,我们也可以在 soap 请求中手动添加 Basic Http header。

client.ClientCredentials.UserName.UserName = "UserName";
                client.ClientCredentials.UserName.Password = "Password";

                using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
                {
                    HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
                    httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(client.ClientCredentials.UserName.UserName + ":" + client.ClientCredentials.UserName.Password));
                    OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;

                    // below is a sample call
                    int response = client.addNumbers(1, 2);
                    Console.WriteLine(response);
                    Console.ReadLine();

                }

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