«Олицетворение» сеанса в вызове веб-службы - PullRequest
7 голосов
/ 22 июля 2011

Я пытаюсь написать веб-сервис, который возвращает переменные сеанса. Приложение, которое вызывает этот веб-сервис, имеет доступ к идентификатору сеанса текущего сеанса.

Я попытался сделать это, создав cookie-файл «ASPNet_SessionID», а затем подключив его к серверу, настроив его как контейнер cookie прокси-класса, но это не сработало. Я сделал это так,

 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 просто возвращает данные сеанса следующим образом:

[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

Ответы [ 3 ]

1 голос
/ 13 октября 2011

«Я пытаюсь включить стороннее приложение, чтобы увидеть, какой пользователь вошел в мой сайт.»

Для достижения этой цели вам будет гораздо лучше использовать Членство в ASP.NET поверх сеанса для отслеживания пользователей.

Затем, чтобы увидеть статус входа в систему, вы можете просто сделать это:

bool isLoggedIn = Membership.GetUser("Joe.User").IsOnline;
0 голосов
/ 30 августа 2011

Ваша система рассчитана на одного пользователя?

Вы предлагаете «какой пользователь в данный момент вошел в систему», но если бы это было так, нет необходимости хранить что-либо в сеансе, вы можете просто вставить идентификатор пользователя / имя / детали в таблицу в БД.или потенциально использовать профили .NET для обновления переменной уровня приложения - http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

0 голосов
/ 22 июля 2011

переключить AspCompatibilityMode в true

...