Как установить WSS-тип в SOAP Service Reference C # - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь реализовать интеграцию службы SOAP в проект WPF - C #. Я использовал файл .wsdl как ссылку на сервис в проекте. Я использовал SoapUI для тестирования и смог получить ответ после установки:

  1. Конечная точка
  2. Имя пользователя
  3. Пароль
  4. WSS-Тип

Мне нужно установить тип WSS: PasswordText. Если я оставлю WSS-тип пустым в SoapUI, я получу обратно:

Заголовок WS-Security не найден

Я сейчас пытаюсь получить ответ через C #, но я не знаю, где и как установить WSS-тип в C #.

Вот мой код на C #:

MyClient mainClient = new MyClient();
object myRequestObject = ...

// Client Credentials
mainClient.ClientCredentials.UserName.UserName = "Username";
mainClient.ClientCredentials.UserName.Password = "Password";

using (new OperationContextScope(mainClient.InnerChannel))
{    
    SoapAuthenticationHeader.Create(mainClient.ClientCredentials.UserName.UserName, mainClient.ClientCredentials.UserName.Password);
    object mainResponse = mainClient.GetResponse(myRequestObject);
}

public static class SoapAuthenticationHeader
{
    public static void Create(string theUsername, string thePassword)
    {
        try
        {
            // Add a HTTP Soap Header to an outgoing request
            string authorization = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(theUsername + ":" + thePassword));
            HttpRequestMessageProperty requestMessage = new HttpRequestMessageProperty();
            requestMessage.Headers.Add("Authorization", authorization);
            OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestMessage;
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error at 'Create'" + Environment.NewLine + Environment.NewLine + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
        }
    }
}

В настоящее время я получаю сообщение об ошибке:

HTTP-запрос не авторизован с помощью схемы аутентификации клиента 'Anonymous'. Заголовок аутентификации, полученный от сервера, был 'Basic realm = "Spring Security Application".

Удаленный сервер возвратил ошибку: (401) Unauthorized.

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

Любая помощь / совет будут оценены.

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