Заголовок аутентификации, полученный от сервера. BASI C - WF C - NET CORE - PullRequest
0 голосов
/ 25 февраля 2020

я работаю с WCF (подключенная служба) с. NET CORE, и я хочу вызвать службу wf c и отправить xml ... но при выполнении службы выдается следующее исключение

"Заголовок аутентификации, полученный от сервера, был 'Basi c realm =" AXIS "'."

при запуске службы в пользовательском интерфейсе SOAP я назначаю базовую c авторизацию вариант, и он отлично работает ... но в этой части я не знаю, как установить тип авторизации

У меня также нет никакого файла конфигурации xml, просто json с именем ConnectedService . 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

1 Ответ

0 голосов
/ 26 февраля 2020

Во-первых, убедитесь, что имя учетной записи и пароль верны, вы также можете использовать домен / пользователя.

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!";

Наконец, мы также можем вручную добавить заголовок Basi c Http в запросе soap.

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();

                }

Не стесняйтесь сообщить мне, если проблема все еще существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...