2016-10-12 2 views
0

У меня есть два метода на моей странице webservice.cs, как показано ниже.сеанс очищается после завершения метода

[WebMethod(EnableSession = true)] 
     public void checkEmployee(string emailId, string password) 
     { 
      List<Employee> ListEmp = new List<Employee>(); 
      string cs = ConfigurationManager.ConnectionStrings["rushDB"].ConnectionString; 
      using (SqlConnection con = new SqlConnection(cs)) 
      { 
       SqlCommand cmd = new SqlCommand("select * from Employees where Email='" + emailId + "' AND Password='" + password + "'", con); 
       string personName = null; 
       string personEmail = null; 
       string personDeptName = null; 
       con.Open(); 
       SqlDataReader rdr = cmd.ExecuteReader(); 
       if (rdr.HasRows == true) 
       { 
        while (rdr.Read()) 
        { 
         Employee empChild = new Employee(); 

         empChild.ID = Convert.ToInt16(rdr["ID"]); 
         empChild.Name = rdr["Name"].ToString(); 
         empChild.Email = rdr["Email"].ToString(); 
         empChild.Password = rdr["Password"].ToString(); 
         empChild.DepartName = rdr["DepartName"].ToString(); 

         personName = rdr["Name"].ToString(); 
         personEmail = rdr["Email"].ToString(); 
         personDeptName = rdr["DepartName"].ToString(); 

         ListEmp.Add(empChild); 
        } 
        HttpContext.Current.Session["NamePerson"] = personName; 
        HttpContext.Current.Session["EmailPerson"] = personEmail; 
        HttpContext.Current.Session["DepartPerson"] = personDeptName; 
        JavaScriptSerializer js = new JavaScriptSerializer(); 
        Context.Response.Write(js.Serialize(ListEmp)); 
       } 
      } 
     } 

     [WebMethod(EnableSession = true)] 
     public void GetCurrentData() 
     { 
      Employee ListEmp = new Employee(); 

      if (HttpContext.Current.Session["NamePerson"] != null) 
       ListEmp.Name = HttpContext.Current.Session["NamePerson"].ToString(); 
      if (HttpContext.Current.Session["EmailPerson"] != null) 
       ListEmp.Email = HttpContext.Current.Session["EmailPerson"].ToString(); 
      if (HttpContext.Current.Session["DepartPerson"] != null) 
       ListEmp.DepartName = HttpContext.Current.Session["DepartPerson"].ToString(); 

      JavaScriptSerializer js = new JavaScriptSerializer(); 
      Context.Response.Write(js.Serialize(ListEmp)); 
     } 

Моя проблема заключается в том, что сессия создана в checkEmployee получает исчез после этого метода checkEmployee заканчивается его выполнение.

Я хочу получить значения сеанса в GetCurrentData, но я не могу этого сделать. Любое решение мне поможет. У меня есть googled, но это не помогло.

ответ

1

Чтобы сохранить состояние сеанса в веб-службах, необходимо cookie-jar. В зависимости от того, как вы потребляющих услугу он может получить довольно сложнее, если вы не сделали этого раньше ...

Есть на взгляд на следующие статьи:

http://www.codeproject.com/Articles/322436/RestSessionState

http://www.codeproject.com/Articles/188749/WCF-Sessions-Brief-Introduction

+0

Я не знаю, что это полезно или нет, но моя проблема не была решена –

+0

@ Rush.2707 - при работе с веб-страницами браузер помогает сохранить состояние сеанса, используя сеансовые куки. с веб-сервисами у вас нет такой роскоши. Вместо этого вам нужно использовать метод входа в систему, который возвращает токен (например, cookie). Теперь, когда у вас есть токен, вы можете продолжать отправлять его с каждым последующим запросом, чтобы сервер мог идентифицировать вас. – Ted

Смежные вопросы