2012-01-21 2 views
-1

asp.net 웹 페이지의 버튼 클릭으로 웹 사이트를 열고 싶습니다. 웹 사이트는 기본 인증을 가지고 있습니다. 다음 코드를 사용하고 있지만 웹 사이트를 열 때 원하는 코드가 아닙니다. asp.net의 기본 인증으로 웹 사이트 열기

CredentialCache credentialCache = new CredentialCache(); 
    NetworkCredential credentials = new NetworkCredential("uid", "pwd", "domain"); 
    credentialCache.Add(new Uri("https://www.abc.com"), "Basic", credentials); 
    var request = (HttpWebRequest)WebRequest.Create("https://www.abc.com"); 
    request.Credentials = credentialCache; 

    HttpWebResponse res1 = (HttpWebResponse)request.GetResponse(); 
    using (HttpWebResponse res = (HttpWebResponse)request.GetResponse()) 
    { 
     string ss = res.ResponseUri.ToString(); 
     StreamReader sr = new StreamReader(res.GetResponseStream()); 
     Response.Write (sr.ReadToEnd()); 

    } 

Response.Write

내 페이지에 요청 된 페이지의 HTML을 작성하지만 웹 사이트에 액세스하려면 해당 페이지로 리디렉션해야합니다.

답변

0

긴 검색 후 R & D 마지막으로이 문제의 해결책이 있습니다. COM 구성 요소의 참조를 추가해야합니다. Microsoft Internet Controls 즉 SHDocVw를 사용합니다.

기본 인증이 필요한 웹 사이트를 열려고하면 서버가 "HTTP/1.1 401 Unauthorized \ r \ n"으로 응답하고 클라이언트 자격 증명이 필요하며 브라우저를받을 때 "www_authenticate"헤더를 클라이언트에 보냅니다 이 헤더는 클라이언트 인증 정보를 삽입하기 위해 팝업 상자를 열고 클라이언트 인증 정보를 서버에 전달합니다. 그런 다음 서버는 응용 프로그램에 액세스 할 수 있습니다.

첫 번째 요청에서 클라이언트 자격 증명을 서버에 전달하면 응용 프로그램에 액세스 할 수 있으므로 클라이언트 자격 증명이 필요하지 않습니다.

다음 코드로 클라이언트 자격 증명을 전달했습니다.

InternetExplorer IEControl = new InternetExplorer(); 
     IWebBrowserApp webBrowserCtl = (IWebBrowserApp)IEControl; 
     string strUserName = "UserName"; 
     string strPassword = "Password"; 
     string strAuthenticationHeader = "Authorization: Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(strUserName + ":" + strPassword)) + "\r\n"; 
     webBrowserCtl.Visible = true; 
     webBrowserCtl.Navigate("http://www.abc.com/Home.aspx", null, null, null, strAuthenticationHeader); 

감사

라훌 프라 탑 싱