Использование сеанса в сервисе WCF - PullRequest
1 голос
/ 14 декабря 2011

В моем проекте wcf я хочу сохранить некоторую информацию о пользователе (идентификатор пользователя или что-то еще), когда мы используем сеанс asp.net. После входа в систему идентификатор пользователя будет сохраняться в сеансе и мы можем получить его для другого сервиса. Я обнаружил, что мы можем использовать httpcontext.current.session в wcf, но это только поддержка wcf, размещенного в IIS. Мой wcf сервис будет размещен в оконном сервисе. Есть ли способ сделать? Есть ли переменная или функция в wcf, чтобы получить эти функции? Пожалуйста, ведите меня правильно. Спасибо за вашу помощь.

//For example 

//LogOnWCFService
 public Boolean LogOn(string userID, string PWD)
 {
     currentUserID = userID;
     HttpContext.Current.Session.Add("UserID",userID);
     return true;
 }

//ProcessWCFService
public void Process()
{
    string userid = HttpContext.Current.Session["UserID"].ToString();
    if(userid == 1)
    {
       //Do Something
    }
}

1 Ответ

0 голосов
/ 14 декабря 2011

Я бы не использовал sessions с WCF, особенно если вы хотите использовать данные сеанса для разных вызовов службы.Лучшим подходом было бы реализовать собственное управление сессиями.LogOnService может создать уникальный sesion ID после успешного входа в систему и вернуть его клиенту.session ID можно сохранить вместе с дополнительной информацией (идентификатор пользователя и т. Д.).Все остальные службы затем включают это session ID в каждый вызов метода для идентификации самого себя.

 nSess = logscv.LogOn(UserID)....procsvc.Process(nSess)  
...