У меня есть приложение .NET Core 2.0, и мне нужно вызвать клиент WCF с одного из его контроллеров и передать учетные данные пользователя для аутентификации.
В основном приложении .net я создал ссылку для клиента WCF с помощью Connected Services (поставщик ссылок на веб-службы WCF) и теперь в процессе настройки вызова.Обратите внимание, что я могу без проблем использовать одну и ту же конечную точку в приложении 4.6.
Вот мой код:
var binding = new BasicHttpBinding {Security = {Mode = BasicHttpSecurityMode.Transport}};
var address = new EndpointAddress("https://my-endpoint.asmx");
var client = new MyAppSoapClient(binding, address);
var credentials = CredentialCache.DefaultNetworkCredentials;
client.ClientCredentials.Windows.ClientCredential = credentials;
client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
var response = client.GetStuff("param").Result;
Я столкнулся с рядом проблем:
Это должен быть вызов https
Мне нужно пройти текущий вход в системуучетные данные пользователя для вызова
Текущая ошибка, которую я получаю, выглядит следующим образом:
The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate, NTLM'
Кроме того, ConnectedService.json (автоматически созданный поставщиком ссылок на веб-службы WCF) имеет предопределенную конечную точку Uri.Я не понимаю, почему мне нужно передавать адрес клиенту вручную (кажется, код заставляет меня это делать) ... в идеале я хотел бы, чтобы это динамически исправлялось в json в зависимости от среды.
Спасибо.