3

私のasp.net 2.0アプリケーションは、別のURLへの内部httpsリクエストを実行して、レスポンスで有効なCookieを取得します。

これを .Net 2.0 フレームワークでテストすると、Cookie は返されませんが、.Net 4 では機能します。応答に例外はありませんが、私の直感は、それが会社のプロキシに関連しており、https であることです。.Net 4.0 へのアップグレード以外に何か提案はありますか (巨大なタスク)?

        string ticketissuerURL = "https://Securesite";            
        ServicePointManager.Expect100Continue = false;

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ticketissuerURL);

        // Set some reasonable limits on resources used by this request
        request.MaximumAutomaticRedirections = 4;
        request.MaximumResponseHeadersLength = 4;
        request.KeepAlive = true;
        request.AllowAutoRedirect = false;
        request.PreAuthenticate = true;

        // Pass in current credentials
        request.UserAgent = "Mozilla/4.0 (Windows)";

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
4

1 に答える 1

1

このサイトのコードをCookie ソースとして確認しました。プロパティ response.Headers で、両方のフレームワークに適した Cookie が設定されました。cookie コンテナを作成して、response.Cookies プロパティで表示できるようにすることができます。

request.CookieContainer = new CookieContainer(); 

問題は何か他のものであるように見えます.net 4.0でプロキシまたは実装が変更された可能性があります(そして、サービスの.net 4.0で動作するようにする追加のヘッダーが追加されます)。実際のリクエストを調べるのは良い考えだと思います。フィドラー ツールをダウンロードしてhttps 復号化を有効にし、次に両方のフレームワークからのリクエストを比較することをお勧めします。

コードの先頭にこの行を追加することを忘れないでください

WebProxy proxy = new WebProxy("localhost:8888");

フィドラーがリクエストを検査できるようにします。

于 2013-06-29T07:16:17.170 に答える