问题:在通过httpwebrequest调用时,在response.redirect之后的新会话 [英] Problem: new session after response.redirect when calling via httpwebrequest
问题描述
当我设置会话值然后重定向到另一个页面时,我能够检索会话值。如下:
test-set.aspx
When I set a session value then redirect to another page I am able to retrieve the session value. As follows:
test-set.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
test -get.aspx
test-get.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
以上结果:
The above results:
test = hello world!
但是,当通过HTTPWebRequest尝试此操作时,会创建一个新会话对于重定向的页面。
However, when trying this via a HTTPWebRequest a new session is created for the redirected page.
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结果:
Using HTTPWebRequest results as:
test =
因此HTTPWebRequest从重定向页面检索输出,但重定向页面在新会话中打开。
如何打开重定向页面它被重定向的同一个会话?
我尝试了什么:
So the HTTPWebRequest retrieve the output from the redirected page but the redirected page is opened in a new session.
How can I open the redirected page in the same session it was redirected from?
What I have tried:
HttpWebRequest.AllowAutoRedirect
HttpWebRequest.MaximumAutomaticRedirections
HttpWebRequest.KeepAlive
HttpWebRequest.UseDefaultCredentials
Response.Redirect("test-get.aspx, True")
Response.Redirect("test-get.aspx, False")
推荐答案
作为 F-ES网站注释中提到的核心,我不得不添加会话ID。这只是在GetResponse之前用一行代码完成的:
As F-ES Sitecore mentioned in the comment, I had to add the session ID. This was simply done with one line of code before GetResponse:
TestRequest.CookieContainer = New Net.CookieContainer()
因此更新后的请求如下:
So the updated request looks like:
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"
TestRequest.CookieContainer = New Net.CookieContainer()
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调用时,在response.redirect之后的新会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!