Как я могу получить доступ к сеансу в webmethod?
могу ли я использовать значения сеанса внутри 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, который называет webmethod:
$.ajax({
type: "POST",
url: 'Catalogo.aspx/checaItem',
data: "{ id : 'teste' }",
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
}
});
5 ответов:
вы можете использовать:
HttpContext.Current.Session
но это будет
null
если не указатьEnableSession=true
:[System.Web.Services.WebMethod(EnableSession = true)] public static String checaItem(String id) { return "zeta"; }
есть два способа включить сеанс для веб-метода:
1. [WebMethod(enableSession:true)] 2. [WebMethod(EnableSession = true)]
первый с аргументом конструктора
enableSession:true
не работает для меня. Второй сEnableSession
строительство недвижимости.
вы можете попробовать вот так [WebMethod] публичный статический недействительными метод mymethod(строковый идентификатор, строка цена, количество строк, строка Итого)// добавьте здесь новый параметр { db_class Connstring = новый 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; } }
взгляните на вас в интернете.конфигурация, если сеанс включен. Этот пост здесь может дать больше идей. https://stackoverflow.com/a/15711748/314373
для включения сеанса мы должны использовать [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; } }
таким образом, он будет повторно использовать все имена из сеанса и показать.