如何让aspx页面的Session和WebService的Session公用
怎么让aspx页面的Session和WebService的Session公用
就是在应用程序一个aspx页面上定义一个Session,然后让该页面访问WebService,让WebService和页面使用一个Session把刚才定义的东西取出来,我是这么做的
Default.aspx.cs
SessionService.asmx
但是很奇怪,第一次访问SessionService.asmx Session["Message"]为空,再刷新一次Default.aspx SessionService.asmx可以访问Session["Message"]了,但是响应超时!
------解决方案--------------------
好像要把session发送过来?
不过,我有点奇怪,同一个网站下面,还需要webservice吗?
就是在应用程序一个aspx页面上定义一个Session,然后让该页面访问WebService,让WebService和页面使用一个Session把刚才定义的东西取出来,我是这么做的
Default.aspx.cs
- C# code
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Net; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Session["Message"] = "Message"; localhost.SessionService ss = new localhost.SessionService(); ss.CookieContainer = new CookieContainer(); Cookie cookie = new Cookie("ASP.NET_SessionId", Session.SessionID); cookie.Domain = "localhost"; cookie.HttpOnly = true; cookie.Path = "/"; ss.CookieContainer.Add(cookie); string message=ss.GetSession(); int i = 0; i++; } }
SessionService.asmx
- C# code
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; /// <summary> ///SessionService 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class SessionService : System.Web.Services.WebService { public SessionService () { //如果使用设计的组件,请取消注释以下行 //InitializeComponent(); } [WebMethod(EnableSession=true)] public string GetSession() { if (Session["Message"] != null) return Session["Message"].ToString(); else return "NoSession"; } }
但是很奇怪,第一次访问SessionService.asmx Session["Message"]为空,再刷新一次Default.aspx SessionService.asmx可以访问Session["Message"]了,但是响应超时!
------解决方案--------------------
好像要把session发送过来?
不过,我有点奇怪,同一个网站下面,还需要webservice吗?