我正在嘗試編寫一個返回會話變量的Web服務。調用此Web服務的應用程序可以訪問當前會話的會話ID。在Web服務調用中「模擬」會話
我試圖通過創建一個「ASPNet_SessionID」cookie,然後將它設置爲代理類的cookie容器到Web服務,但這不起作用。我這樣做,像這樣,
protected void CallService(string sessionID)
{
localhost.AuthService auths = new localhost.AuthService(); //Service Proxy class
System.Net.CookieContainer cookieJar = new System.Net.CookieContainer();
System.Net.Cookie newCookie = new System.Net.Cookie("ASPNet_SessionID", sessionID);
newCookie.Domain = "http://localhost";
cookieJar.Add(newCookie);
auths.CookieContainer = cookieJar;
string SessionData = auths.GetSessionData();
的GetSessionData Web方法簡單地返回,像這樣的會議數據:
[WebMethod(EnableSession=true)]
public string GetSessionData(string sessionID) {return ((string)Session["user"]);}
如果這種方式工作,還是我做一些完全錯誤的?
UPD:該鏈接實際上解決我的問題 - 我是能夠訪問所有的會話InProc方式,並能選擇正確的ID:
http://weblogs.asp.net/imranbaloch/archive/2010/04/05/reading-all-users-session.aspx
你到底想達到什麼目的?試圖欺騙asp的會話處理將導致一些非常脆弱的代碼。 – Journey
我試圖啓用第三方應用程序來查看用戶登錄到我的網站。該應用程序與我的網站位於同一個域中,這意味着它可以訪問相同的Cookie,因此也可以訪問SessionID。我認爲,如果我在會話中存儲有關當前用戶的信息,則第三方應用程序將能夠向Web服務發送請求,以便從會話中檢索用戶的名稱。 –
你如何保持會話? InProc方式? –