15 Stimmen

Session' existiert nicht im aktuellen Kontext

Ich habe den folgenden Code, der Sitzung verwendet, aber ich habe einen Fehler in der Zeile :

if (Session["ShoppingCart"] == null)

der Fehler ist cS0103: The name 'Session' does not exist in the current context Was ist das Problem?

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using System.Collections.Generic;
using System.Web.SessionState;
/// <summary>
/// Summary description for ShoppingCart
/// </summary>
public class ShoppingCart
{
    List<CartItem> list;
    public ShoppingCart()
    {
        if (Session["ShoppingCart"] == null)
            list = new List<CartItem>();
        else
            list = (List<CartItem>)Session["ShoppingCart"];
    }
}

47voto

Peter Punkte 34999

Utilisez

if (HttpContext.Current == null || 
    HttpContext.Current.Session == null || 
    HttpContext.Current.Session["ShoppingCart"] == null)

anstelle von

if (Session["ShoppingCart"] == null)

17voto

Jeff Punkte 1921

Das Problem ist, dass Ihre Klasse nicht von Page erbt. Sie müssen

public class ShoppingCart

zu

public class ShoppingCart : Page

und es wird funktionieren

9voto

Sie müssen entweder Ihre Klasse in eine Page durch Vererbung von Page oder haben die Session übergeben, oder verwenden Sie HttpContext.Current.Session .

0voto

In meinem Fall nur Try-Catch-Block Problem zu beheben, wie diese:

protected void Application_AcquireRequestState(object sender, EventArgs e)
    {
        /// Using from Try-Catch to handle "Session state is not available in this context." error.
        try
        {
            //must incorporate error handling because this applies to a much wider range of pages 
            //let the system do the fallback to invariant 
            if (Session["_culture"] != null)
            {
                System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(Session["_culture"].ToString());
                //it's safer to make sure you are feeding it a specific culture and avoid exceptions 
                System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Session["_culture"].ToString());
            }
        }
        catch (Exception ex)
        {}
    }

0voto

bhavsar japan Punkte 125

Wenn Sie die Sitzung direkt verwenden möchten, fügen Sie einfach folgenden Namespace hinzu

using system.web.mvc

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X