Проблема: в новой сессии после ответа.переадресация при звонке с помощью класса HttpWebRequest
Когда я устанавливаю значение сеанса, а затем перенаправляю его на другую страницу, Я могу получить значение сеанса. Следующим образом:
тест-набор.aspx-файл
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Session("test") = "hello world!" Response.Redirect("test-get.aspx") End Sub
тест-вам.aspx-файл
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Response.Write("test = " & CType(Session("test"), String)) End Sub
Приведенные выше результаты:
test = hello world!
Однако при попытке сделать это с помощью HTTPWebRequest для перенаправленной страницы создается новый сеанс.
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim TestRequest As Net.HttpWebRequest = CType(System.Net.WebRequest.Create(Me.Request.Url.GetLeftPart(UriPartial.Authority) & "/test-set.aspx"), Net.HttpWebRequest) TestRequest.Method = "GET" Using TestResponse As Net.HttpWebResponse = CType(TestRequest.GetResponse, Net.HttpWebResponse) Using Reader As IO.StreamReader = New IO.StreamReader(TestResponse.GetResponseStream) Response.Write(Reader.ReadToEnd) End Using End Using End Sub
Использование результатов HTTPWebRequest как:
test =
Таким образом, HTTPWebRequest извлекает выходные данные с перенаправленной страницы, но перенаправленная страница открывается в новом сеансе.
Как я могу открыть перенаправленную страницу в том же сеансе, с которого она была перенаправлена?
Что я уже пробовал:
HttpWebRequest.AllowAutoRedirect
HttpWebRequest.MaximumAutomaticRedirections
HttpWebRequest.KeepAlive
HttpWebRequest.UseDefaultCredentials
Response.Redirect("test-get.aspx, True")
Response.Redirect("test-get.aspx, False")
F-ES Sitecore
Страницы, доступные через браузер, могут получить доступ к вашему сеансу, потому что они отправляют идентификатор сеанса в виде файла cookie. Когда вы сами создадите запрос с помощью кода, он добавит к этому запросу только то, что вы ему скажете добавить. Если вы хотите, чтобы страница, которую вы запрашиваете, имела доступ к сеансу, вам нужно будет добавить идентификатор сеанса в качестве файла cookie к отправляемому запросу.
Вам придется поискать точный код в google, но это будет что-то вроде того, что появляется здесь
http://geekswithblogs.net/xlinesonegoal/archive/2008/10/10/send-cookie-in-http-header-webrequest-asp.net-c-web-services.aspx
Er Avinash Kunnure
Вы правы
Inology
спасибо Вам большое, что сработали лакомством!