问题:在通过httpwebrequest调用时,在response.redirect之后的新会话 [英] Problem: new session after response.redirect when calling via httpwebrequest

查看:126
本文介绍了问题:在通过httpwebrequest调用时,在response.redirect之后的新会话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我设置会话值然后重定向到另一个页面时,我能够检索会话值。如下:



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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆