Cookieless Session In WebService

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>
原文地址:https://www.cnblogs.com/wucg/p/2425184.html