如何在同一页面中维护会话

时间:2010-08-10 12:51:04

标签: c# session save pageload

在我的页面加载中,我有会话[“名称”]

当我使用此代码保存时:

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

说到这一行:

response = (HttpWebResponse)request.GetResponse();

它再次转到页面加载,那时会话为空。怎么样???如何在同一页面中维护会话。为什么当这条线遇到时它被清除......

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

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

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