申し訳ありませんが、これは高度なVB.NETプログラマのための基本的な質問かもしれませんが、私はVB.NETの初心者です。IHttpHandlerの文脈の問題
ウェブアプリケーションがあり、特定のページにログインする必要があります。ユーザーがログインしている場合は、この技術を使用し、古いプログラマを確認するには:
Public Class CustomHandler
Implements System.Web.IHttpHandler, IReadOnlySessionState
Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim sv As New WL.SessionVariables(context)
If Not (sv.IsLoggedIn) Then
context.Response.Write("No access unless you're the CEO!!!" & sv.IsLoggedIn)
ElseIf sv.IsLoggedIn Then
DownloadFile(context)
Else
End If
End Sub
//other code
End Class
:
Dim sv As New WL.SessionVariables(Me.Context)
If Not (sv.IsLoggedIn) Then
Response.Redirect(WL.SiteMap.GetLoginURL())
End If
をまあ、私はこれが私によって行わハンドラでチェックするにはログインして私はこれを試してみました使用する必要があります
さて、 "ログインしていますか"のチェックは常に(私がログインした後でも)偽です。私はそれがコンテキストの問題だと思います。したがって、他のすべてのページはロギングチェックでうまく動作しますが、このハンドラにはこの特定の問題があります。
お手伝いできますか?
UPDATE:
ログインがトラフこの方法で行われます:
Public Sub SetCreditialCookie(ByVal accountID As Integer)
Me.AccountID = accountID
m_context.Session.Item("loggedInAccount") = accountID
m_context.Response.Cookies.Add(New System.Web.HttpCookie("account_id", CStr(m_context.Session.Item("account_id"))))
m_context.Response.Cookies("account_id").Expires = DateTime.Now.AddDays(5)
End Sub
、それがログインしています、それをチェックするために、このメソッドが呼び出されます。
Public Function IsLoggedIn() As Boolean
If Not m_context.Session.Item("loggedInAccount") Is Nothing And Me.AccountID = m_context.Session.Item("loggedInAccount") Then
Return True
Else
Return False
End If
End Function
UPDATE 2: - コードをデバッグすると、複数のkiセッションの間違ったものをチェックしていました。
ありがとうございます。私はログインを行うためのコードで私の質問を更新しました。あなたが言ったように紛争を引き起こす可能性のある何かが間違っているのを見ますか? –
'SetCreditialCookie'はいつ呼び出されますか? – jdavies
ログインボタンを押してください: 'sv.SetCreditialCookie(accountID)' –