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 上为您的服务工作)。我认为检查真实请求是个好主意。我建议您下载fiddler 工具并启用 https 解密和下一个比较来自两个框架的请求。

请记住在代码开头添加此行

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

让提琴手检查您的请求。

于 2013-06-29T07:16:17.170 回答