3

私は自分のウェブサイトのページに をcode送信しています。HttpWebRequest

このページに送信すると、値requestは保持されません。Session

以下は、Web リクエストを生成しているコードです。

Public Overloads Shared Function ReadURL(ByVal sUrl As String) As String
        Dim sBody As String
        Dim oResponse As HttpWebResponse
        Dim oRequest As HttpWebRequest
        Dim oCookies As New CookieContainer
        oRequest = WebRequest.Create("http://localhost:64802/inventory/purchase_order.aspx?id=5654")
        oRequest.CookieContainer = oCookies
        oResponse = oRequest.GetResponse()
        Dim oReader As New StreamReader(oResponse.GetResponseStream())
        sBody = oReader.ReadToEnd
        oReader.Close()
        oResponse.Close()
        Return sBody
    End Function

以下は、Purchaseorder.aspx.vb の Page_Load に記述されたコードです。

iDomains_ID = Session("Domains_ID")
        iLogin_ID = Session("Login_ID")
        sPage = Request.Path
        If Request.QueryString.Count > 0 Then sPage &= "?" & Request.QueryString.ToString()
        sPage = shared01.Encrypt(sPage, Application("PK"))

        If Not User.Identity.IsAuthenticated Or iLogin_ID = 0 Then
            Response.Redirect("/login.aspx?page=" & sPage)
            Exit Sub
        End If

上記は値をcode取得せずsession、にリダイレクトしますlogin page

それで、どのように私はsession両方のページでHttpWebRequest.

あなたの返信を探しています。

編集

CookieContainer上記のコードでわかるように、クラスを使用しようとしました。しかし、それはまったく機能しません。

4

3 に答える 3

1

別の方法として、呼び出し元のページと呼び出されたページが同じアプリケーションにあると仮定するとServer.Executeメソッドを使用して、サイトに個別の要求を行わずにページのコンテンツを読み込むことができます。

Public Overloads Function ReadURL(ByVal sUrl As String) As String
    Using writer As New StringWriter()
       Server.Execute("~/inventory/purchase_order.aspx?id=5654", writer, False)
       Return writer.ToString()
    End Using
End Function
于 2013-06-18T12:28:06.013 に答える
0

あなたのコードは、リクエストと投稿を行う必要があるようです。最初のリクエストでは、ログイン ページにリダイレクトされます。2 つ目は、セッションを開始し、(?) セッション変数に情報を保存する、ログイン ページにポストするリクエストです。その投稿 (ログイン ページへの) により、目的のページにリダイレクトされます。

この例のコードhttp://www.codeproject.com/Articles/145122/Fetching-ASP-NET-authenticated-page-with-HTTPWebRe (少し調整しました) を使用して、これを行うアプリケーションを作成しました。

于 2013-06-12T12:55:43.553 に答える