myAPI - это имя ссылки на веб-сервис, которую я добавил в свой проект, и я пытаюсь отправить Basic Authorization в заголовок SOAP-запроса с использованием C #, но это не происходит независимо от того, какой метод я пробую.
Я много читал в Интернете, и в результате я нашел следующие способы, но ни один из них не работает с моим.
То, что я пробовал:
Метод 1: без ошибок, но ничего не делает
NetworkCredential netCredential = new NetworkCredential("un", "pw");
Uri uri = new Uri(resol.Url);
ICredentials credentials = netCredential.GetCredential(uri, "Basic");
myAPI.Credentials = credentials;
myAPI.PreAuthenticate = true;
Метод 2: (FYI ResolvingBinding (ниже) в основном состоит из всего моего метода, который исходит из ссылки на службу myAPI), нопроблема в том, что «клиент» не имеет никакого определения для InnerChannel и ClientCredential, поэтому этот метод тоже не работает
myAPI.ResolvingBinding client = new myAPI.ResolvingBinding();
using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
{
var 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;
client.DoSomething();
}
Моя конечная цель - закодировать имя пользователя: пароль в базу 64, которую я пытался ввторой пример.Как мне решить эту проблему?Пожалуйста, не стесняйтесь добавлять комментарии / оставлять предложения или указывать на ошибки, которые я мог упустить из виду.