0

在我的页面加载中,我得到了 session["name"]

当我使用此代码保存时:

Stream stream = null;
request = (HttpWebRequest)WebRequest.Create(url);
response = (HttpWebResponse)request.GetResponse();

说到这一行:

response = (HttpWebResponse)request.GetResponse();

它再次移动到页面加载,那时会话为空。如何???如何在同一页面中维护会话。为什么遇到这条线就清零了……

4

2 回答 2

1

会话不使用 HttpWebResponse 持续存在的原因是默认情况下,HttpWebResponse不会为您处理 cookie。ASP.NET 使用 cookie 来识别哪个会话属于用户。

值得庆幸的是,有一个名为的助手类CookieContainer可以帮助您解决这个问题。创建一个CookieContainer并将其附加到您的 Web 请求 - 在后续请求中,您需要将 cookie 容器或其中的 cookie 再次附加到请求以保持会话:

CookieContainer cookieJar = new CookieContainer();
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
request.CookieContainer = cookieJar;

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

// on a second request, you can use the cookieJar container to pass the session cookie.
于 2010-08-10T12:59:33.307 回答
0

您正在尝试从您的应用程序发出 Web 请求,但它不是您的会话,而是您的应用程序会话。

数据(名称键和它的值)存储在您的会话中,但是当您调用WebRequest.GetResponse()方法时,您的应用程序会启动它自己的全新会话。

于 2010-08-10T12:55:41.290 回答