2016-11-15 31 views
0

私はHttpWebResponseからASP.NET_SessionIdを取得しようとしていますが、そのようなデータはレスポンスには含まれていないようです。 基本的には、認証が必要なページのいくつかのステップをシミュレートしようとしています。問題は認証ではなく、私の問題は認証後にASP.NET_SessionIdを取得して、私の将来の要求/手順で使用できるようにすることです。HttpWebResponseでASP.NET_SessionIdにアクセスするC#

Chromeのデベロッパーツール>ネットワークからは、ヘッダーにASP.NET_SessionIdが表示されますが、HttpWebResponseには含まれていません。これがなぜ起こっているのでしょうか?

var httpWebRequest    = (HttpWebRequest) WebRequest.Create(url); 
httpWebRequest.UserAgent  = "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36";    httpWebRequest.Method   = "POST"; 
httpWebRequest.ContentType  = "application/x-www-form-urlencoded"; 
httpWebRequest.ContentLength = 0; 
var httpWebResponse    = (HttpWebResponse) httpWebRequest.GetResponse(); 

私の要求後、私は、クッキーを設定しASP.NET_SessionIdヘッダーが表示されるはずですが、ない運: そこに私のコードではありません。どんなイデアですか?

は、私が見てきた何人かの人々は

httpWebResponse.Headers["ASP.NET_SessionId"] 

または

httpWebResponse.Headers["SESSION_ID"] 

が動作するはずですが、いいえ、セッションIDヘッダが設定されても、任意のCookieされていることを言います。

答えて

0

多くの研究の後、答えは基本的に、我々はすべてのリクエストで同じCookieContainerオブジェクト参照を維持する必要がありhere

ました。回答からいくつかのSet-Cookieを抽出してリクエストに追加しましたが、今は何もする必要はありません.CookieContainerはすべてを透過的に管理します。

回答のCookieがののCookieContainerに設定されています。セキュリティ上の問題を解決するために見つけた方法なので、セッションIDにアクセスできないため、CookieContainerへの参照を保持しないでください。

私のコードの例があります。

var cookieContainer = new CookieContainer(); 

var httpWebRequest1 = (HttpWebRequest) WebRequest.Create(url); 
httpWebRequest1.CookieContainer = cookieContainer; 

// do the request and some logic 

var httpWebRequest2 = (HttpWebRequest) WebRequest.Create(anotherUrl); 
httpWebRequest2.CookieContainer = cookieContainer; // same cookieContainer reference 

すべてがうまくいきました。誰かを助けてくれることを願っています。

関連する問題