继承自ServiceStackController的MVC控制器中以下三行之间的确切差异是什么?
(我找不到任何文档中解释的差异)
//A - (default: reload = true)
var session = GetSession();
//B
var session = GetSession(false);
//C
var session = SessionAs<IAuthSession>();
答案 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>();