är det sessionid du vill ha ut testa System.Web.HttpContext.Current.Session.SessionID
(OBS SessionID är inte en integer utan string)
annars varför inte System.Web.HttpContext.Current.Session("id") ?
26 svar · 1 131 visningar · startad av Glitter
Jag har en inloggnings sida:
loggin.aspx
Public Class loggin
Private Sub BtnLoggin_Click1(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles BtnLoggin.Click
If Page.IsValid = True Then
If users.Login(anv.Value, pass.Value) Then
bla bla...
Else
FelAnvPass.Text = "Fel användarnamn eller lösenord"
End If
End If
End Sub
End Class
och classen users
Public Class Users
Public Property UserId() As Integer
Get
Return _userId
End Get
Set(ByVal Value As Integer)
_userId = Value
End Set
End Property
Public Sub New()
Try
[B]Me.UserId = Convert.ToInt32(System.Web.HttpContext.Current.Session.Item("id"))[/B]
Catch ex As Exception
f.Print(ex.Message)
End Try
End Sub
Function Login(ByVal user As String, ByVal pass As String) As Boolean
bla bla....
System.Web.HttpContext.Current.Session.Add("id", str)
Return loginResult
End Function
End Class
Jag får du fel på Propertyn Userid "Object reference not set to an instance of an object." när jag anropar den från loggin.aspx.
Jag kan få fram sesisonen på loggin.aspx genom session("id")
Någon som vet vad det kan vara för fel?
är det sessionid du vill ha ut testa System.Web.HttpContext.Current.Session.SessionID
(OBS SessionID är inte en integer utan string)
annars varför inte System.Web.HttpContext.Current.Session("id") ?
lucgo446 skrev:
är det sessionid du vill ha ut testa System.Web.HttpContext.Current.Session.SessionID
(OBS SessionID är inte en integer utan string)
Nej jag vill ha ut session("id")
lucgo446 skrev:
annars varför inte System.Web.HttpContext.Current.Session("id") ?
Jag har testat det med men samma sak...
f.Print(ex.Message) printar alltså ut "Object reference not set to an instance of an object." ?
Japp
ja, det verkar som sessionen inte hålls mellan sidladdningarna, eller gör den?
Jo det gör den för jag kan hämta den på en annan sida.
Och den är kvar när jag updaterar sidan.
och det är inte System.Web.HttpContext.Current som är null?
Kan den vara det när jag sätter
System.Web.HttpContext.Current.Session.Add("id", str) ?
Skriver ut den och får "System.Web.HttpContext" eller hur kollar jag det?
System.Web.HttpContext context = System.Web.HttpContext.Current
if context = null then
f.Print("den är null")
else
f.Print("Sessions idet är" & context.SessionID)
end if
Klassen users har ju ingen aning om vad en Session är. Du får skicka med Session eller Context som argument.
emission skrev:
Klassen users har ju ingen aning om vad en Session är. Du får skicka med Session eller Context som argument.
Grejen var att jag skulle slippa att göra det. Då blir det att skicka in samma värde som kommer ut och det är lite onödigt...
Testade också att sätta propertyn UserId utanför classen men den "sparade" inte värdet.
just det context = nothing är det
det som du gör borde funka, enligt mig, du kan hämta sessionen som du gör om den är triggad av en httpRequest
nu måste jag dra
lucgo446 skrev:
just det context = nothing är det
det som du gör borde funka, enligt mig, du kan hämta sessionen som du gör om den är triggad av en httpRequest
nu måste jag dra
va nu förstår jag inte kan vara trött :).
Kan jag få ett exempel?
jo jag menar att du ska kolla contexten a la VB:
System.Web.HttpContext context = System.Web.HttpContext.Current
if IsNothing(context) then
f.Print("Jag får inte fram contexten. jag ger upp, och skickar in den istället")
else
f.Print("Sessions idet är" & context.SessionID)
end if
Dim context As System.Web.HttpContext = System.Web.HttpContext.Current
If IsNothing(context) Then
f.Print("Jag får inte fram contexten. jag ger upp, och skickar in den istället")
Else
f.Print("Sessions idet är" & context.Session.SessionID)
End If
Ger fel "NullReferenceException: Object reference not set to an instance of an object."
på raden f.Print("Sessions idet är" & context.Session.SessionID)
Så den är inte tom då.
men
Dim context As System.Web.SessionState.HttpSessionState = System.Web.HttpContext.Current.Session
If IsNothing(context) Then
f.Print("Jag får inte fram contexten. jag ger upp, och skickar in den istället")
Else
f.Print("Sessions idet är" & context.SessionID)
End If
ger "Jag får inte fram contexten. jag ger upp, och skickar in den istället"
Så session e tom av någon kostig anledning.
varför blir det så?
kör du din applikation på webben så borde du få din session.
Om man kör på en annan tråd så kommer man inte åt Sessionen. men det gör du ju inte vad jag föstår?
ang mitt exempel så är det väldigt konstigt. du får ut HttpContext men inte HttpSessionState... mkt underligt faktiskt.
lucgo446 skrev:
kör du din applikation på webben så borde du få din session.
Om man kör på en annan tråd så kommer man inte åt Sessionen. men det gör du ju inte vad jag föstår?
ang mitt exempel så är det väldigt konstigt. du får ut HttpContext men inte HttpSessionState... mkt underligt faktiskt.
Nja är det verkligen det? det betyder ju att HttpContext finns men inte HttpSessionState för den är ju en "underårdnad" till HttpContext.
Jag testade att köra Inherits System.Web.UI.Page och då får jag felmeddelandet "Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive" på Me.UserId = Convert.ToInt32(Session.Item("id"))
sökte och hittade http://support.microsoft.com/default.aspx?scid=kb;en-us;837376 men jag förstår inte. den beskriver ju att man inte har något session över huvudtaget på applicationen eller har jag fattat fel?
Jag har igallefall testat att lägga in det som står i web.config men det funkar inte igallefall.