protected void Button1_Click(object sender, EventArgs e) { localhost.MyDemo MyService; // try to get the proxy from Session state MyService = Session["MyService"] as localhost.MyDemo; if (MyService == null) { // create the proxy MyService = new localhost.MyDemo(); // create a container for the SessionID cookie MyService.CookieContainer = new CookieContainer(); // store it in Session for next usage Session["MyService"] = MyService; } // call the Web Service function Label1.Text += MyService.HelloWorld() + "<br />"; }
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.SessionState; namespace TestWebServiceTradition.WS { public class OurSessionIDManager : ISessionIDManager { public OurSessionIDManager() { } private SessionIDManager sid = new SessionIDManager(); public string CreateSessionID(HttpContext context) { return sid.CreateSessionID(context); } public string GetSessionID(HttpContext context) { return sid.GetSessionID(context); } public void Initialize() { sid.Initialize(); } public bool InitializeRequest(HttpContext context, bool suppressAutoDetectRedirect, out bool supportSessionIDReissue) { bool redirectCookie = false; if ((context.Request.RawUrl.ToLower().IndexOf(".asmx") > -1)) redirectCookie = true; return sid.InitializeRequest(context, redirectCookie, out supportSessionIDReissue); } public void RemoveSessionID(HttpContext context) { sid.RemoveSessionID(context); } public void SaveSessionID(HttpContext context, string id, out bool redirected, out bool cookieAdded) { sid.SaveSessionID(context, id, out redirected, out cookieAdded); } public bool Validate(string id) { return sid.Validate(id); } } }
<configuration>
<system.web>
<webServices>
<protocols>
<addname="HttpGet"/>
<addname="HttpPost"/>
</protocols>
</webServices>
</system.web>
</configuration>