webForumDet fria alternativet

Session

.NETur .NET

26 svar · 1 131 visningar · startad av Glitter

Medlem sedan juli 2003465 inlägg
Frågan#1

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?

Medlem sedan aug. 2002221 inlägg
#2

ä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") ?

Medlem sedan juli 2003465 inlägg
#3

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...

Medlem sedan aug. 2002221 inlägg
#4

f.Print(ex.Message) printar alltså ut "Object reference not set to an instance of an object." ?

Medlem sedan juli 2003465 inlägg
#5

Japp

Medlem sedan aug. 2002221 inlägg
#6

ja, det verkar som sessionen inte hålls mellan sidladdningarna, eller gör den?

Medlem sedan juli 2003465 inlägg
#7

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.

Medlem sedan aug. 2002221 inlägg
#8

och det är inte System.Web.HttpContext.Current som är null?

Medlem sedan juli 2003465 inlägg
#9

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?

Medlem sedan aug. 2002221 inlägg
#10
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
Medlem sedan dec. 19996 721 inlägg
#11

Klassen users har ju ingen aning om vad en Session är. Du får skicka med Session eller Context som argument.

Medlem sedan juli 2003465 inlägg
#12

Man kan väll inte använda isnothing(context) istället för context = null för det är väll inte samma sak? om man kan det så är den inte tom/null
null funkar inte i VB.net

Medlem sedan juli 2003465 inlägg
#13

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.

Medlem sedan aug. 2002221 inlägg
#14

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

Medlem sedan juli 2003465 inlägg
#15

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?

Medlem sedan aug. 2002221 inlägg
#16

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
Medlem sedan juli 2003465 inlägg
#17
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å.

Medlem sedan juli 2003465 inlägg
#18

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å?

Medlem sedan aug. 2002221 inlägg
#19

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.

Medlem sedan juli 2003465 inlägg
#20

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.

138 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)