Я портирую свое приложение Windows 8.1 в приложение Windows 10 uwp. Проблема, с которой я столкнулся, заключается в том, что старый код (хотя он все еще компилируется), который использует System.Net.HttpClient, выдает какое-то глупое исключение, когда я пытаюсь аутентифицироваться на сервере с использованием NTLM.
«Известная ошибка Windows 10 SDK - мы ее исправляем». - вся помощь от Microsoft в течение нескольких месяцев. (описано кем-то еще здесь: https://social.msdn.microsoft.com/Forums/en-US/9e137127-e0e5-4aec-a7a9-d66f5b84c70b/rtm-known-issue-systemnethttphttpclient-or-httpwebrequest-class-usage-in-a-uwp-app-throws-a?forum=Win10SDKToolsIssues)
Единственный обходной путь? - «Вместо этого используйте Windows.Web.HttpClient»
Так что я пытаюсь.
var request = new HttpRequestMessage();
request.RequestUri = MyURI;
request.Method = HttpMethod.Post;
request.Content = new HttpStringContent(MyContent);
request.Headers.Add("User-Agent", "MyApp");
request.Headers.Add("SOAPAction", "MySoapAction");
request.Content.Headers.ContentType = new HttpMediaTypeHeaderValue("text/xml; charset=utf-8");
var filter = new HttpBaseProtocolFilter();
filter.AllowAutoRedirect = true;
filter.AllowUI = true;
filter.ServerCredential = new PasswordCredential(address, username, password);
HttpClient client = new HttpClient(filter);
var response = await client.SendRequestAsync(httpMessage);
И это работает! Отображает уродливое системное всплывающее окно над моим приложением с просьбой ввести учетные данные (оно уже заполнено - потому что я установил учетные данные в коде) - после нажатия кнопки ОК статус ответа ОК - все сработало как вред, как и должно.
Так в чем проблема? Проблема в том, что я не хочу показывать это системное всплывающее окно пользователям. Если бы только я установил:
filter.AllowUI = false;
вся магия исчезает. Ни всплывающего окна, ни аутентификации. Ответ дает ошибку 401. Несанкционированный.
Почему? Что я делаю неправильно? Возможно ли, чтобы проверка подлинности NTLM нормально работала в приложениях Windows 10 UWP без всплывающего окна системы? Еще одна проблема с SDK?