服务堆栈:GetSession和SessionAs <t> </t>之间的差异

时间:2013-12-17 11:54:03

标签: c# servicestack

Service.GetSession()Service.SessionAs<T>()之间是否存在重大差异以及他们如何解决会话?

我正在维护这个代码,它在某些请求中使用了一个,而在其他请求中使用了后者。是否可以互换或是否有其他考虑因素?

1 个答案:

答案 0 :(得分:3)

正是这种差异

public virtual IAuthSession GetSession(bool reload = false)
{
    var req = this.Request;
    if (req.GetSessionId() == null)
        req.Response.CreateSessionIds(req);
    return req.GetSession(reload);
}

protected virtual TUserSession SessionAs<TUserSession>()
{
    var ret = TryResolve<TUserSession>();
    return !Equals(ret, default(TUserSession))
        ? ret 
        : Cache.SessionAs<TUserSession>(Request, Response);
}

我从未使用过任何一种,但似乎它们不应随意互换。您可以浏览此源代码here并找出它们的显着差异。由于缺乏文件,乍一看很难说清楚