1

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, 에디

답변

0

나는 문제가 MSDN 포럼에서 해결되었습니다 참조 :
https://social.msdn.microsoft.com/Forums/windowsapps/en-US/58620579-240d-49da-8538-cee5aff91a68/w81-sideloaded-windows-81-application-generates-an-exception-when-calling-methods-of-an-restful?forum=wpdevelop 그래서 내가 더 많은 방문자가 쉽게 해결책을 찾을 수 있도록 여기에 게시. 감사합니다.

+0

Mattew, 불행하게도 병합 된 MSDN에 두 가지 질문이 있습니다. 오직 한 명만 대답했습니다. 위에 나열된 다른 하나는 아직 답이 없습니다. 그래서 왜 위의 현상이 일어나고 있는지에 대한 아이디어가 있다면 누구나 해결책을 듣고 싶습니다. – Eddie

+0

모든 사람이 이해할 수 있도록, 첫 번째 문제는 GetAsync에서 던진 예외입니다. 이 예외의 내부 메시지는 "연결된 당사자가 일정 기간 후 제대로 응답하지 않았거나 연결된 호스트가 127.0.0.1:8888에 응답하지 않아 연결이 실패했습니다"때문에 연결 시도가 실패했습니다. 이 오류 메시지는 Fiddler가 내 앱을 테스트하려고 시도한 태블릿에서도 실행 중이었기 때문에 발생했습니다. 피들러가 멈 추면 나는이 문제의 본문에서 묘사 된 행동을 취했다. – Eddie