기본 HTTP 인증에 대한 해결 방법 만 있습니다.
이러한 경우를 감지하기 위해 웹 브라우저를 탐색하기 전에 HEAD HTTP 요청을 발행합니다.
예외가 발생하지 않으면 웹 브라우저에서 해당 URI를 탐색합니다.
예외가 발생하면 WebException을 catch하고 e.Response.Headers 컬렉션을 가져오고 WWW-Authenticate 값을 확인합니다. 값이 비어 있지 않으면 서버가 인증을 요청한다고 결론을 내립니다.
WWW-Authenticate 값이 "basic"으로 시작되면 사용자에게 자신의 팝업 컨트롤을 사용하여 자격 증명을 요청합니다. 그런 다음 한 번 더 HEAD 요청을 발행하여 자격 증명의 유효성을 검사합니다. 이번에는 webClient.Credentials = new NetworkCredential (user, pass); 그들이 OK 경우
, 나는 마지막으로 다음과 같은 방법을 사용하여 웹 브라우저 컨트롤에 자격 증명을 전달 :
public static Uri addCredsToUri(Uri u, string user, string pass)
{
UriBuilder uriSite = new UriBuilder(u);
uriSite.UserName = user;
uriSite.Password = pass;
return uriSite.Uri;
}
그러나 WWW 인증 값은 서버가 NTLM 인증을 사용 즉, "협상"로 시작하는 경우 , 웹 브라우저에 자격 증명을 전달하는 방법을 모르겠습니다. 적어도이 사건을 감지하고 NTLM 인증이 지원되지 않는다는 것을 최종 사용자에게 알리는 적절한 오류 메시지를 표시합니다.
안녕하세요,이 문제에 대한 해결책이 있습니까? 예인 경우 대답으로 게시하십시오. – asitis
제 대답을 참조하십시오 – Soonts