Windows 10 Enterprise DELL 태블릿에 사이드로드하는 Windows 8.1 저장소 응용 프로그램이 있습니다. 이 앱은 원격 서버에 설치된 ASP.NET 웹 API를 통해 저장소의 데이터를 사용합니다. 웹 API는 Windows 인증을 사용하도록 구성됩니다. Fiddler를 사용하여 웹 API 호출을하면 NTLM 협상에서 여러 단계를 볼 수 있습니다. 401.2 HTTP 오류 메시지는 HTTP 200 Ok 전에 두 번 반환됩니다.Windows 8.1 응용 프로그램이 Windows 인증에 필요한 NTLM 협상을 수행하지 않습니다.
그러나 내 응용 프로그램은 401.1을 얻은 다음 다른 작업을 수행하지 않습니다. 내 응용 프로그램의 패키지 매니페스트에서 필요한 기능 목록에서 엔터프라이즈 인증 확인란을 선택했습니다. 또한 개발 컴퓨터에서 Visual Studio Simulator로 테스트했을 때 협상이 완료되었고 웹 API가 내 호출에 올바르게 응답했습니다. 백그라운드에서 자동으로 수행 된 NTLM 협상을하기 위해
는, 비록 수행해야 할 모든은 HttpClientHandler 개체는 다음과 같이 구성하는 것입니다 : 다음
var webApiAuthClientHandler = new HttpClientHandler()
{
Credentials = CredentialCache.DefaultNetworkCredentials,
ClientCertificateOptions = ClientCertificateOption.Automatic
};
이 HttpClientHandler 개체가 전달 될 것입니다 나는 무엇을 놓치고
var webApiHttpClient = new HttpClient(webApiAuthClientHandler)
{
BaseAddress = new Uri(_myWebApiUri, UriKind.Absolute),
Timeout = new TimeSpan(0, 0, 150)
};
다음 HttpClient를의 생성자에서 객체는 웹 API 호출을 만드는 데 사용? 내 앱이 백그라운드에서 인증을 자동으로 협상하고 GetAsync 호출이 필요한 HTTP 코드 200을 반환하게하려면 어떻게해야합니까?
모든 제안은 높이 평가 될 것입니다. TIA, 에디
Mattew, 불행하게도 병합 된 MSDN에 두 가지 질문이 있습니다. 오직 한 명만 대답했습니다. 위에 나열된 다른 하나는 아직 답이 없습니다. 그래서 왜 위의 현상이 일어나고 있는지에 대한 아이디어가 있다면 누구나 해결책을 듣고 싶습니다. – Eddie
모든 사람이 이해할 수 있도록, 첫 번째 문제는 GetAsync에서 던진 예외입니다. 이 예외의 내부 메시지는 "연결된 당사자가 일정 기간 후 제대로 응답하지 않았거나 연결된 호스트가 127.0.0.1:8888에 응답하지 않아 연결이 실패했습니다"때문에 연결 시도가 실패했습니다. 이 오류 메시지는 Fiddler가 내 앱을 테스트하려고 시도한 태블릿에서도 실행 중이었기 때문에 발생했습니다. 피들러가 멈 추면 나는이 문제의 본문에서 묘사 된 행동을 취했다. – Eddie