У меня есть приложение для хранения Windows 8.1, которое я загружаю на планшет Windows 10 Enterprise DELL. Приложение использует данные из репозитория через веб-API ASP.NET, установленный на удаленном сервере. Веб-интерфейс настроен на использование проверки подлинности Windows. Если я использую Fiddler для создания вызовов Web API, я вижу несколько шагов в согласовании NTLM, сообщения об ошибках 401.2 HTTP возвращаются дважды до HTTP 200 Ok.Приложение Windows 8.1 не выполняет переговоры NTLM, необходимые для проверки подлинности Windows
Однако мое приложение получает 401.1, а затем ничего не делает. В манифесте пакета приложения я проверил флажок «Проверка подлинности предприятия» в списке необходимых возможностей. Кроме того, когда я тестировал его с помощью Visual Studio Simulator, на моей машине разработки, переговоры были выполнены, и веб-API правильно ответил на мои вызовы.
Для того, чтобы иметь NTLM Negotiation выполняется автоматически в фоновом режиме, я, хотя все, что нужно сделать, это есть объект HttpClientHandler построен так:
var webApiAuthClientHandler = new HttpClientHandler()
{
Credentials = CredentialCache.DefaultNetworkCredentials,
ClientCertificateOptions = ClientCertificateOption.Automatic
};
Затем этот объект HttpClientHandler будет принят в конструкторе HTTPClient объект, используемый, чтобы сделать Web API вызовов:
var webApiHttpClient = new HttpClient(webApiAuthClientHandler)
{
BaseAddress = new Uri(_myWebApiUri, UriKind.Absolute),
Timeout = new TimeSpan(0, 0, 150)
};
Что я упускаю? Как получить мое приложение для автоматического согласования проверки подлинности в фоновом режиме, и мой вызов GetAsync возвращает необходимый код HTTP 200?
Любое предложение будет высоко оценено. ТИА, Эдди
Mattew, у меня было два отдельных вопроса по MSDN, которые, к сожалению, были объединены. Только один был дан ответ. Другой, также перечисленный выше, по-прежнему остается без ответа. Поэтому, если у кого-то есть идея, почему происходит описанное выше явление, мне бы очень хотелось услышать это решение. – Eddie
Просто, чтобы все понимали, первая проблема была исключением, брошенным GetAsync. Внутреннее сообщение этого исключения было «Ошибка подключения», потому что связанная сторона не ответила должным образом через некоторое время или установив соединение не удалось, поскольку подключенный хост не смог ответить 127.0.0.1:8888 ». Я узнал, что это сообщение об ошибке было связано с тем, что Fiddler также работал на планшете, где я пытался проверить свое приложение. После того, как Фиддлер был остановлен, я получил поведение, описанное в теле этого вопроса. – Eddie