How can I access session in a webmethod?

后端 未结 6 1565
礼貌的吻别
礼貌的吻别 2020-11-29 22:42

Can i use session values inside a WebMethod?

I\'ve tried using System.Web.Services.WebMethod(EnableSession = true) but i can\'t access Session parameter

相关标签:
6条回答
  • 2020-11-29 23:20

    In C#, on code behind page using web method,

    [WebMethod(EnableSession = true)]
            public static int checkActiveSession()
            {
                if (HttpContext.Current.Session["USERID"] == null)
                {
                    return 0;
                }
                else
                {
                    return 1;
                }
            }
    

    And, in aspx page,

    $.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;
                    }
                });
    
    0 讨论(0)
  • 2020-11-29 23:22

    You can use:

    HttpContext.Current.Session
    

    But it will be null unless you also specify EnableSession=true:

    [System.Web.Services.WebMethod(EnableSession = true)]
    public static String checaItem(String id)
    { 
        return "zeta";
    }
    
    0 讨论(0)
  • 2020-11-29 23:30

    You can try like this [WebMethod] public static void MyMethod(string ProductID, string Price, string Quantity, string Total)// Add new parameter Here { db_class Connstring = new db_class(); try {

                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;
            }
        }
    
    0 讨论(0)
  • 2020-11-29 23:36

    There are two ways to enable session for a Web Method:

    1. [WebMethod(enableSession:true)]
    
    2. [WebMethod(EnableSession = true)]
    

    The first one with constructor argument enableSession:true doesn't work for me. The second one with EnableSession property works.

    0 讨论(0)
  • 2020-11-29 23:36

    For enable session we have to use [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.";
        }
    
    
    }
    

    Now to retrive these names using session we can go like this

    [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;
            }
    
        }
    

    so it will retrive all the names from the session and show.

    0 讨论(0)
  • 2020-11-29 23:36

    Take a look at you web.config if session is enabled. This post here might give more ideas. https://stackoverflow.com/a/15711748/314373

    0 讨论(0)
提交回复
热议问题