0

私のコードはこんな感じです

Doc doc = new Doc();
string url =  HttpContext.Current.Request.Url.AbsoluteUri;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
// required for HttpWebResponse.Cookies
request.CookieContainer = new CookieContainer(); 

request.Credentials = new NetworkCredential("username", "password");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

if (response.Cookies.Count>0) { // includes ASP.NET_SessionId
    bool needsCookie2 = false;
    StringBuilder builder = new StringBuilder("Cookie: ");
    for(int i = 0; i<response.Cookies.Count; ++i) {
        Cookie cookie = response.Cookies[i];
        if(!needsCookie2 && cookie.Version!=1)
             needsCookie2 = true;
        if(i>0)
             builder.Append("; ");
        builder.Append(cookie.ToString());
    }
    builder.Append(!needsCookie2? "\r\n": "\r\nCookie2: $Version=1\r\n");
    doc.HtmlOptions.HttpAdditionalHeaders = builder.ToString();
}

doc.HtmlOptions.NoCookie = true;
doc.HtmlOptions.HostWebBrowser = false;

// cookieless Forms Authentication adds authentication ticket to the URL
int id = doc.AddImageUrl(response.ResponseUri.AbsoluteUri);
doc.Save(HttpContext.Current.Server.MapPath("~/media/pdf/1212.pdf"));
doc.Clear();

私は自分のウェブサイトで単純なフォーム認証を使用しています。ログインの詳細がCookieに保存されているため、abcPDFを介してPDFを印刷するには、このwebRequestを認証する必要があります。そこから取得してリクエストに追加しようとしています。エラーは一列に並んでいると思いますrequest.Credentials = new NetworkCredential("username", "password");

4

1 に答える 1

2

Webサイトがフォーム認証を使用していると言いますが、要求は基本認証資格情報を使用しています。

request.Credentials = new NetworkCredential("username", "password");

Webサイトを基本認証に切り替えるか、ログインページに対してPOSTリクエストを実行して、後続のリクエストで使用するセッションCookie/トークンを取得する必要があります。

于 2013-01-09T13:13:53.813 に答える