Могу ли я использовать значения сеанса внутри 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);
}
});
Ответы:
Вы можете использовать:
Но это будет,
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
собственностью работает.источник
WebMethodAttribute(Boolean)
в документации.Для включения сеанса мы должны использовать [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; } }
поэтому он извлечет все имена из сеанса и покажет.
источник
Вы можете попробовать вот так [WebMethod] public static void MyMethod (string ProductID, string Price, string Quantity, string 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; } }
источник
Взгляните на ваш web.config, если сессия включена. Этот пост может дать больше идей. https://stackoverflow.com/a/15711748/314373
источник
В C # на странице кода за страницей с использованием веб-метода
[WebMethod(EnableSession = true)] public static int checkActiveSession() { if (HttpContext.Current.Session["USERID"] == null) { return 0; } else { return 1; } }
И на странице aspx
$.ajax({ type: "post", url: "", // url here contentType: "application/json; charset=utf-8", dataType: "json", data: '{ }', crossDomain: true, async: false, success: function (data) { returnValue = data.d; if (returnValue == 1) { } else { alert("Your session has expired"); window.location = "../Default.aspx"; } }, error: function (request, status, error) { returnValue = 0; } });
источник