0

Windowsフォームで認証されたWebページがあり、ユーザーがこのページを要求したときに、このページのHTMLのコピーをサーバーにダウンロードしたいと思います。私はこのようなことを試みました

using (WebClient client = new WebClient())
        {
            string htmlCode = client.DownloadString("http://aksphases:200/lynliste.aspx");  
        }

システムに渡したURLが新しいセッションを作成するため、正しい結果が得られません。その場合、このWebリクエストを認証する必要がありますが、これはできません。このWebページを認証する唯一の方法は、そのユーザーです。手動でログインします(コードでwerequestを認証する方法は知っていますが、特別な理由でここでは試すことができません)。URLを認証せずにブラウザで実行されている現在のページのHTMLをダウンロードする他の方法はありますか?

4

2 に答える 2

3

現在のフォーム認証Cookieをリクエストと一緒に送信できます。

using (WebClient client = new WebClient())
{
    client.Headers[HttpRequestHeader.Cookie] = 
        System.Web.HttpContext.Current.Request.Headers["Cookie"];
    string htmlCode = client.DownloadString("http://aksphases:200/lynliste.aspx");  
}

このようにして、基本的に現在のHTTPリクエストCookieをリモートHTTP呼び出しに転送します。

于 2013-01-28T09:10:16.047 に答える
0

Web サーバーが匿名アクセスを許可していない場合、回避方法はありません。Web サイトで自分自身を認証する必要があります。

ただし、ログオン操作は手動で行う必要があるという考えに反して、コードを介して行うこともできます。Windows 認証の場合、Credentialsプロパティを介して資格情報を渡します。フォーム認証の場合、ログオン資格情報をログイン ページに POST し、その後の要求で応答からの認証 Cookie を使用する必要があります (フィドラーなどのツールを使用して、ブラウザーからの要求/応答を検査し、コード内で同じものを複製します)。

于 2013-01-28T09:11:03.660 に答える