как сохранить сеанс на той же странице - PullRequest
0 голосов
/ 10 августа 2010

в моей загрузке страницы у меня есть сеанс ["name"]

Когда я использую этот код для сохранения:

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

Когда речь идет об этой строке:

response = (HttpWebResponse)request.GetResponse();

он снова переходит к загрузке страницы, и в этот раз сеанс пуст.как???как сохранить сеанс на той же странице.почему очищается, когда встречается эта строка ...

Ответы [ 2 ]

1 голос
/ 10 августа 2010

Причина, по которой сеансы не сохраняются с HttpWebResponse, заключается в том, что по умолчанию HttpWebResponse не будет обрабатывать файлы cookie для вас. ASP.NET использует cookie для определения того, какой сеанс принадлежит пользователю.

К счастью, есть вспомогательный класс с именем CookieContainer, который может помочь вам в этом. Создайте CookieContainer и присоедините его к вашему веб-запросу - при последующих запросах вам потребуется снова прикрепить контейнер 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.
0 голосов
/ 10 августа 2010

Вы пытаетесь сделать веб-запрос из своего приложения, и в этот момент это не ваш сеанс, а сеанс приложения.

Данные (имя ключа и его значение) сохраняются в вашем сеансе, но когда вы вызываете метод WebRequest.GetResponse(), тогда ваше приложение запускает свой собственный, совершенно новый сеанс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...