Sessions should be enabled for web methods.
A sample code snippet would be as follows.
[sourcecode language="csharp"]
/// Summary description for ReceivingService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class ReceivingService : System.Web.Services.WebService
{
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Dictionary<string, object> removeItem(int Id)
{
var response = new Dictionary<string, object>();
bool found = false;
if ( HttpContext.Current.Session["rec_cart"] != null)
{
List<CartItem> cartItems = (List<CartItem>)Session["rec_cart"];
if (cartItems.Count > 0)
{
foreach(var item in cartItems){
if(item.Id == Id){
cartItems.Remove(item);
HttpContext.Current.Session["rec_cart"] = cartItems;
found = true;
break;
}
}
}
}
if (found)
{
response["status"] = true;
response["total"] = GetGrandTotal();
}
else
{
response["status"] = false;
}
return response;
}
}
[/sourcecode]
I also configured cookieless sessions in web.config to get web service call properly routed.
<sessionState cookieless="true" regenerateExpiredSessionId="true" timeout="100"/>
No comments:
Post a Comment