none
Session-Wert nach refresh leer

    Frage

  • Hallo,

    hätte eine bzgl. Sesisons über die gesamte Applikation.

    Ich übergebe in einer ashx-Datei eine Sesion-Variable einen Wert.

    Bsp:

    HttpContext.Current.Session["TestPersonen"] = MeinePersonenKlasse;

    Ind er web.config habe ich lediglich den timeout definiert

    <sessionState timeout="20"></sessionState>

    Wenn ich jetzt eine andere aspx Seite aufrufe oder die Seite refresh, ist die Sesion im Codebehind leer.

    Wie oder wo muss ich was einstellen damit die Sesion nicht verloren geht.

    Danke im Voraus und Grüße

    Geri

    Montag, 5. März 2018 13:44

Antworten

  • verwende eigentlich "IReadOnlySessionState" aber auch mit "IRequiresSessionState" hat sichs nichts geändert.

    Nur zur Sicherheit: Wo genau setzt Du die Sessionvariable? In der ASHX bzw. dem dortigen Code? Falls ja, kannst Du natürlich nicht IReadOnlySessionState nehmen, das sagt schon der Name.

    Kannst Du die Sessionvariable mal in einer separaten Testseite (ASPX) setzen und die dann einfach nochmal erneut aufrufen?

    Letztendlich wirst Du so oder so debuggen müssen. Daher setz mal Breakpoints in der global.asax auf

    • Application_PreRequestHandlerExecute
    • Application_BeginRequest
    • Application_EndRequest
    • Application_Error
    • Application_OnStart
    • Application_OnEnd
    • Session_OnStart
    • Session_OnEnd

    und schau, welche davon aufgerufen werden. Wenn beim zweiten Request mind. eines der letzten vier Ereignisse ausgelöst wird, stört irgendetwas den Ablauf und die Anwendung oder die Session wird beendet.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert geRe.LI Donnerstag, 8. März 2018 09:08
    Mittwoch, 7. März 2018 17:50
    Moderator

Alle Antworten

  • Hallo Geri,

    welche Art von ASP.NET Anwendung verwendest Du? Core? Oder Classic? WebForms? RazorPages? MVC? WebPages? ...?

    Ist das Session Objekt an sich null oder nur die Variable "TestPersonen"?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 5. März 2018 17:12
    Moderator
  • Hy,

    im Grunde genommen die Handelsübliche Webform.

    Lg

    Geri

    Dienstag, 6. März 2018 09:16
  • ... und irgend eine Idee?

    Lg

    Geri

    Dienstag, 6. März 2018 14:42
  • Ich warte noch auf deine Antwort zur zweiten Frage.

    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Dienstag, 6. März 2018 14:45
    Moderator
  • Hallo Stefan,

    sry habe das übersehen.

    Die Session welcher in der ashx gesetzt wird, ist im codebehind einer aspx Seite null.

    Lg

    Geri

    Mittwoch, 7. März 2018 09:42
  • Hi,

    leider beantwortet das nicht ganz die Frage.

    Ist das Session Objekt an sich null? Ergibt also bereits HttpContext.Current.Session null oder erst HttpContext.Current.Session["DeineSessionVariable"]?

    Wenn letzteres, prüf mal die SessionID auf beiden Seiten. Ist die identisch?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 7. März 2018 09:47
    Moderator
  • Hy,

    also das Session Objekt ist nicht null sondern die Session-Variable (HttpContext.Current.Session["DeineSessionVariable"]) ist null.

    Die Session-ID ist in beiden Dateien die selbe.

    Danke und Lg

    Geri

    Mittwoch, 7. März 2018 12:23
  • Hallo Geri,

    falls Du nicht grade cookielose Sessions verwendest (wogegen aber die gleiche SessionID spricht) dann kann ich mir eigentlich nur vorstellen, dass irgendwo ein Session.Clear() aufgerufen wird oder die Sessionvariable an sich genullt bzw. aus der Collection der Sessionvariablen entfernt wird.

    Debug das mal bitte und setz in der global.asax im BeginRequest Ereignis einen Breakpoint und schau, ob die Sessionvariable auch hier schon leer ist.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 7. März 2018 12:29
    Moderator
  • Hallo Geri,

    sorry :( Ich habe leider überlesen, dass es um einen generischen Handler (ASHX) geht. Dort muss man ggfs. die Session erst komplett mit reinnehmen.

    Imports System
    Imports System.Web
    
    Namespace DeinNamespace
        
    Public Class DeineHandlerKlasse
    
        Implements IHttpHandler, IRequiresSessionState
    
        Public Sub ProcessRequest( ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
            ...
        End Sub
    
    End Class

    Schau mal, ob die Schnittstelle IRequiresSessionState bei dir implementiert wird.

    (P.S.: Ist zwar jetzt VB.NET Code, sollte ja aber kein Problem sein, die Schnittstelle auch in C# einzubinden, oder?)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 7. März 2018 12:39
    Moderator
  • Hallo Stefan,

    verwende eigentlich "IReadOnlySessionState" aber auch mit "IRequiresSessionState" hat sichs nichts geändert.

    Lg

    Geri

    Mittwoch, 7. März 2018 14:02
  • Hallo Geri,

    dann doch das hier mal prüfen:

    falls Du nicht grade cookielose Sessions verwendest (wogegen aber die gleiche SessionID spricht) dann kann ich mir eigentlich nur vorstellen, dass irgendwo ein Session.Clear() aufgerufen wird oder die Sessionvariable an sich genullt bzw. aus der Collection der Sessionvariablen entfernt wird.

    Debug das mal bitte und setz in der global.asax im BeginRequest Ereignis einen Breakpoint und schau, ob die Sessionvariable auch hier schon leer ist.



    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 7. März 2018 15:10
    Moderator
  • verwende eigentlich "IReadOnlySessionState" aber auch mit "IRequiresSessionState" hat sichs nichts geändert.

    Nur zur Sicherheit: Wo genau setzt Du die Sessionvariable? In der ASHX bzw. dem dortigen Code? Falls ja, kannst Du natürlich nicht IReadOnlySessionState nehmen, das sagt schon der Name.

    Kannst Du die Sessionvariable mal in einer separaten Testseite (ASPX) setzen und die dann einfach nochmal erneut aufrufen?

    Letztendlich wirst Du so oder so debuggen müssen. Daher setz mal Breakpoints in der global.asax auf

    • Application_PreRequestHandlerExecute
    • Application_BeginRequest
    • Application_EndRequest
    • Application_Error
    • Application_OnStart
    • Application_OnEnd
    • Session_OnStart
    • Session_OnEnd

    und schau, welche davon aufgerufen werden. Wenn beim zweiten Request mind. eines der letzten vier Ereignisse ausgelöst wird, stört irgendetwas den Ablauf und die Anwendung oder die Session wird beendet.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert geRe.LI Donnerstag, 8. März 2018 09:08
    Mittwoch, 7. März 2018 17:50
    Moderator
  • Hallo Stefan,

    danke vorerst für deine Antworten.

    Das mit global.asax im BeginRequest habe ich probiert. Das HTTPContext.Current.Session Objekt ist immer null.

    Den letzten Beitrag werde ich noch testen, bin gestern nicht mehr dazu gekommen.

    Lg

    Geri

    Donnerstag, 8. März 2018 05:01
  • Hallo Stefan,

    habe jetzt so ziemlich alles probiert, mit Breakpoints usw.

    Zuerst ging es nicht aber mittlerweile geht es und weiss nicht woran das lag.

    Habe Chache, Temp etc gelöscht, Projekt bereiningt und neu kompiliert und jetzt geht es.

    Jedenfalls vielen Dank für deine Unterstützung.


    Lg

    Geri

    Donnerstag, 8. März 2018 09:08