我可以在WebMethod
内使用会话值吗?
我尝试使用System.Web.Services.WebMethod(EnableSession = true)
,但我无法访问in this example之类的会话参数:
[System.Web.Services.WebMethod(EnableSession = true)]
[System.Web.Script.Services.ScriptMethod()]
public static String checaItem(String id)
{
return "zeta";
}
这是调用webmethod的JS:
$.ajax({
type: "POST",
url: 'Catalogo.aspx/checaItem',
data: "{ id : 'teste' }",
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
}
});
答案 0 :(得分:110)
您可以使用:
HttpContext.Current.Session
但除非您同时指定null
:
EnableSession=true
[System.Web.Services.WebMethod(EnableSession = true)]
public static String checaItem(String id)
{
return "zeta";
}
答案 1 :(得分:10)
有两种方法可以为Web方法启用会话:
1. [WebMethod(enableSession:true)]
2. [WebMethod(EnableSession = true)]
构造函数参数enableSession:true
的第一个对我不起作用。第二个EnableSession
属性。
答案 2 :(得分:0)
你可以这样试试 [的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;
}
}
答案 3 :(得分:0)
如果启用了会话,请查看web.config。这篇文章可能会提供更多想法。 https://stackoverflow.com/a/15711748/314373
答案 4 :(得分:0)
对于启用会话,我们必须使用[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;
}
}
所以它将从会话中检索所有名称并显示。
答案 5 :(得分:0)
在C#中,使用Web方法的页面后面的代码中,
[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;
}
});