Ответ 1
Проблема в том, что ваш класс не наследуется от Page. вам нужно изменить
public class ShoppingCart
отдо
public class ShoppingCart : Page
и это будет работать
У меня есть следующий код, который использует сеанс, но у меня есть ошибка в строке:
if (Session["ShoppingCart"] == null)
ошибка cS0103: The name 'Session' does not exist in the current context
в чем проблема?
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"];
}
}
Проблема в том, что ваш класс не наследуется от Page. вам нужно изменить
public class ShoppingCart
отдо
public class ShoppingCart : Page
и это будет работать
Используйте
if (HttpContext.Current == null ||
HttpContext.Current.Session == null ||
HttpContext.Current.Session["ShoppingCart"] == null)
вместо
if (Session["ShoppingCart"] == null)
Вам нужно либо преобразовать свой класс в Page
путем наследования с Page
, либо передать Session
, либо использовать HttpContext.Current.Session
.
Сала.
В моем случае проблема с исправлением блока try-catch, например:
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 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)
{}
}
Создание новой страницы и вставка всего на нее, со сломанной страницы, не сработало. Что работала над закрытием Visual Studio и ее повторным открытием. Сломанная страница работала, потом
Если вы хотите использовать сеанс напрямую, просто добавьте следующее пространство имен
using system.web.mvc