WCF服务中的会话使用情况

时间:2011-12-14 07:55:55

标签: c# wcf visual-studio-2008 wcf-data-services wcf-client

在我的wcf项目中,我想在我们使用asp.net session时存储一些用户信息(userid或者其他东西)。登录后,userid将存储在session中 我们可以检索它用于其他服务。我发现我们可以在wcf中使用httpcontext.current.session但是只支持在IIS中托管的wcf。 我的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 :(得分:0)

我会避免在WCF中使用sessions,特别是如果你想在不同的服务调用上使用会话数据。 更好的方法是实现自己的会话管理。成功登录后,LogOnService可以创建唯一的sesion ID并将其返回给客户端。 session ID可以与其他信息(UserID等)一起保存。然后,所有其他服务都会在每个方法调用中包含此session ID来识别自身。

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