Как я могу получить доступ к сеансу в веб-методе?
Могу ли я использовать значения сеанса внутри WebMethod
?
Я пробовал использовать System.Web.Services.WebMethod(EnableSession = true)
, но я не могу получить доступ к параметру сеанса, например в этом примере:
[System.Web.Services.WebMethod(EnableSession = true)]
[System.Web.Script.Services.ScriptMethod()]
public static String checaItem(String id)
{
return "zeta";
}
здесь JS, который вызывает веб-метод:
$.ajax({
type: "POST",
url: 'Catalogo.aspx/checaItem',
data: "{ id : 'teste' }",
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
}
});
Ответы
Ответ 1
Вы можете использовать:
HttpContext.Current.Session
Но это будет null
, если вы также не укажете EnableSession=true
:
[System.Web.Services.WebMethod(EnableSession = true)]
public static String checaItem(String id)
{
return "zeta";
}
Ответ 2
Существует два способа включить сеанс для веб-метода:
1. [WebMethod(enableSession:true)]
2. [WebMethod(EnableSession = true)]
Первый аргумент конструктора enableSession:true
не работает для меня. Второй с свойством EnableSession
работает.
Ответ 3
Вы можете попробовать это
[WebMethod] public static void MyMethod (строка ProductID, строка Цена, строка Количество, строка Total)//Добавить новый параметр Здесь { db_class Connstring = new db_class(); пытаться {
DataTable dt = (DataTable)HttpContext.Current.Session["aaa"];
if (dt == null)
{
DataTable dtable = new DataTable();
dtable.Clear();
dtable.Columns.Add("ProductID");// Add new parameter Here
dtable.Columns.Add("Price");
dtable.Columns.Add("Quantity");
dtable.Columns.Add("Total");
object[] trow = { ProductID, Price, Quantity, Total };// Add new parameter Here
dtable.Rows.Add(trow);
HttpContext.Current.Session["aaa"] = dtable;
}
else
{
object[] trow = { ProductID, Price, Quantity, Total };// Add new parameter Here
dt.Rows.Add(trow);
HttpContext.Current.Session["aaa"] = dt;
}
}
catch (Exception)
{
throw;
}
}
Ответ 4
Взгляните на ваш web.config, если сеанс включен. Этот пост здесь может дать больше идей.
fooobar.com/questions/84785/...
Ответ 5
Для включения сеанса мы должны использовать [WebMethod (enableSession: true)]
[WebMethod(EnableSession=true)]
public string saveName(string name)
{
List<string> li;
if (Session["Name"] == null)
{
Session["Name"] = name;
return "Data saved successfully.";
}
else
{
Session["Name"] = Session["Name"] + "," + name;
return "Data saved successfully.";
}
}
Теперь, чтобы получить эти имена, используя сеанс, мы можем пойти так:
[WebMethod(EnableSession = true)]
public List<string> Display()
{
List<string> li1 = new List<string>();
if (Session["Name"] == null)
{
li1.Add("No record to display");
return li1;
}
else
{
string[] names = Session["Name"].ToString().Split(',');
foreach(string s in names)
{
li1.Add(s);
}
return li1;
}
}
поэтому он выберет все имена из сеанса и покажет.