Я запускаю приложение на .net core 2.1.Я добавил веб-сервис wsdl через подключенные сервисы, которые успешно сгенерировали мне WcfServiceClient.
При использовании Basic Autorization он работает отлично .
здеськласс, который я использую для вызова метода мыла helloword:
public string HellowWorld(string input)
{
string wsRes = null;
try
{
var service = new WorkerProcessServiceClient();
var url = $"http://ServerUrl/Directory/WsName.svc";
UriBuilder uriBuilder = new UriBuilder(url);
service.Endpoint.Address = new EndpointAddress(uriBuilder.Uri);
service.ClientCredentials.UserName.UserName = Username;
service.ClientCredentials.UserName.Password = Password;
using (OperationContextScope scope = new OperationContextScope(service.InnerChannel))
{
HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] =
"Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(service.ClientCredentials.UserName.UserName
+ ":"
+ service.ClientCredentials.UserName.Password));
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
wsRes = service.HelloWorldAsync(input, RetailContext).GetAwaiter().GetResult();
service.Close();
}
}
catch (Exception ex)
{
wsRes = ex.Message;
}
return wsRes;
}
Это нормально работает с серверами, которые работают на Basic Authorization .Я использую те же учетные данные с SOAP UI , и он работает очень хорошо.и мне даже не нужно указывать
<==> Проблема сейчас <=>
У меня есть второй сервер, который работает с Авторизация NTLM .Я сделал все это: '(но, похоже, ничего не работает.
1 - я изменил свой service.clientCredential.Username
на service.clientCredential.Windows
и добавил service.clientCredential.Windows.domain
2 - я также изменил заголовок с"Basic " + Convert...
до "Ntlm " + Convert...
3 - я добавил домен в заголовок и поставил его в первую и последнюю позиции.
при использовании SOAP UI , онработает просто отлично.
Я не знаю, что еще делать Пожалуйста, помогите.