Не удалось передать имя пользователя и пароль в заголовке soapui в сервисе wcf - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть одна служба WCF, которую я пытаюсь использовать через тестовый клиентский проект на c #,

Я использую приложение SOAPUI, затем из этого приложения я могу передать тело вместе с аутентификацией в запросе и могу декодироватьЭто.

но я могу передать часть тела мыла через тестовый клиентский проект, но не могу пройти аутентификацию в заголовке вместе с частью тела в запросе.

нижеприведенный код, который я написал в тестовом клиентском проекте:

AService.AServiceClient client = new AService.AServiceClient();
        AService.GetAByKeyRequest request = new AService.GetAByKeyRequest
        {
           Authorization = "xyz:123",
           AKey = "123"
        };
        var SoapResponse = ((AService.IAService)client).GetAByKey(request);

и ниже - часть кода, в которой выполняется запрос:

GetAResponse GetAByKey(GetAByKeyRequest getAByKeyRequest)
{
    //...
    string basicAuthorization = request.Headers[System.Net.HttpRequestHeader.Authorization];
    //...
}

Пожалуйста, дайте некоторое представление

1 Ответ

0 голосов
/ 14 февраля 2019

Непонятно о тестовом клиенте SoapUI, но если вы используете клиент wcf. Вы можете добавить заголовок http через HttpRequestMessageProperty.

 MetadataTestClient client = new MetadataTestClient();
        try
        {
            using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
            {
                HttpRequestMessageProperty property;
                if (OperationContext.Current.OutgoingMessageProperties.ContainsKey(HttpRequestMessageProperty.Name)){
                    property = OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] as HttpRequestMessageProperty;
                }
                else
                {
                    property = new HttpRequestMessageProperty();
//HttpRequestMessagProperty is an item in OutgoingMessageProperties
                    OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = property;
                }

// add property to HttpRequestMessagePropery could set HttpHeader
                property.Headers.Add (System.Net.HttpRequestHeader.Authorization, "myAuthorization");
                string re = client.HelloWorld();
            }


        }
...