URL認証を使用してasp.net2.0を実行しているWebサイトがあります。保護されたファイルにアクセスするには、ユーザーがログインする必要があるWebサイトの保護された領域があります。System.Net.WebClientオブジェクトを使用して同じことを行い、保護された領域にファイルをダウンロードすることは可能ですか?
保護されたファイル、リソース、ページなどへのURLを手動で入力しようとすると、ログインページに転送されます。以下のコードを実行するたびに、「protectedFile.zip」内のログインページのhtmlも取得します。
public void test()
{
try
{
using (var client = new CookieAwareWebClient())
{
//Not sure which name values to include, so I used what was in the post output in Firefox's firebug.
var values = new NameValueCollection
{
{ "ctl00$ContentPlaceHolder1$Login1$UserName", "testUsername" },
{ "ctl00$ContentPlaceHolder1$Login1$Password", "testPassword" }
};
retValue = client.UploadValues("www.test.com/login.aspx", values);
//retValue contains the login page?
Console.WriteLine(ASCIIEncoding.ASCII.GetString(retValue));
// If the previous call succeeded we now have a valid authentication cookie??
client.DownloadFile("www.test.com/protected/protectedFile.zip", "protectedFile.zip");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
Console.WriteLine(ASCIIEncoding.ASCII.GetString(retValue));
}
}
public class CookieAwareWebClient : WebClient
{
public CookieAwareWebClient()
{
CookieContainer = new CookieContainer();
}
public CookieContainer CookieContainer { get; private set; }
protected override WebRequest GetWebRequest(Uri address)
{
var request = (HttpWebRequest)base.GetWebRequest(address);
request.CookieContainer = CookieContainer;
return request;
}
}
私は以下の関連する質問を見てきましたが、どれも私が理解できる最終的な解決策を持っていません。
asp.net保護されたサーバーからファイルをダウンロードする
WebClientリクエストを認証するにはどうすればよいですか?
クレデンシャルを使用してページにアクセスするWebClient
WebClientでasp.netWebサイトにログインできません
どんな助けでもいただければ幸いです!