2012-01-21 9 views
-1

asp.netのWebページのボタンをクリックしてウェブサイトを開きたいとします。 Webサイトには基本認証があります。私は次のコードを使用していますが、そのWebサイトを開くための希望のコードではありません。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); 

おかげ

ラーフルPratap Singhの