继承自ServiceStackController的MVC控制器中以下三行之间的确切差异是什么?

时间:2014-12-28 01:32:14

标签: c# servicestack

继承自ServiceStackController的MVC控制器中以下三行之间的确切差异是什么?

(我找不到任何文档中解释的差异)

//A - (default: reload = true)
var session = GetSession(); 

//B
var session = GetSession(false);

//C
var session = SessionAs<IAuthSession>();

1 个答案:

答案 0 :(得分:0)

GetSession更好地命名为GetOrCreateSession,因为如果它不存在,它将获得一个类型会话或创建一个新会话。它还将会话实例存储在HTTP请求上下文中,如果reload:false将在本地实例存在时返回该实例:

IAuthSession session = GetSession(reload:false);
IAuthSession session = GetSession(reload:true);

如果reload:true,它将始终从基础ICacheClient检索会话。

SessionAs<T>始终从ICacheClient获取会话,如果不存在则返回空实例。它还会返回自定义AuthUserSession的输入版本:

CustomUserSession session = SessionAs<CustomUserSession>();