“Impersonating"会话中的web服务调用

本文关键字:web 服务 调用 会话 Impersonating quot | 更新日期: 2023-09-27 18:02:57

我正在尝试编写一个返回会话变量的web服务。调用此web服务的应用程序可以访问当前会话的会话ID。

我试着通过创建一个"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

“Impersonating"会话中的web服务调用

"我正在尝试启用第三方应用程序来查看哪些用户登录到我的网站。"

要达到这个目标,你最好使用ASP。. NET成员身份通过会话跟踪用户。

然后,要查看登录状态,只需执行以下命令:

bool isLoggedIn = Membership.GetUser("Joe.User").IsOnline;

将AspCompatibilityMode设置为true

您的系统是为单用户设计的吗?

你建议'哪个用户当前登录',但如果是这种情况,没有太多需要在会话中存储任何东西,你可以只是粘贴userid/name/details到数据库中的表中,或者可能使用。net配置文件更新应用程序级变量- http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx