从所有其他页面中,我可以使用以下代码获取 Session 对象:
@{
var user = Request.GetSession();
}
Authenticated: @user.IsAuthenticated
当我尝试从布局文件中获取会话时,我收到此错误消息“无法编译模板。请检查错误列表以获取详细信息”。
我在这个项目上使用自托管,并且会话对象的使用方式与 ASP.NET 项目不同。
有人可以指出我如何解决这个问题的正确方向吗?
从所有其他页面中,我可以使用以下代码获取 Session 对象:
@{
var user = Request.GetSession();
}
Authenticated: @user.IsAuthenticated
当我尝试从布局文件中获取会话时,我收到此错误消息“无法编译模板。请检查错误列表以获取详细信息”。
我在这个项目上使用自托管,并且会话对象的使用方式与 ASP.NET 项目不同。
有人可以指出我如何解决这个问题的正确方向吗?
使用 ViewPageGetSession<T>
进入您的会话。
@inherits ViewPage
@{
var user = GetSession<AuthUserSession>();
}
<h1>@user.IsAuthenticated</h1>
好吧...如果您只是提供使用 _Layout (或父)页面的静态内容(即呈现一个不受服务“支持”的页面,例如主页),我认为您无法检索会话对象,因为请求将为空。
如果您正在呈现由服务支持的页面并且它使用 _Layout 页面,我认为这样的事情应该可以工作......
@{
var auth = false;
if (Request != null)
{
var key = Request.Cookies["ss-id"];
var sess = Cache.GetSession(key.Value);
auth = sess.IsAuthenticated;
}
}
Authenticated: @auth
这应该在使用 ServiceStack 的 ASP.NET MVC/Razor 应用程序的 _Layout.cshtml 文件中工作。我没有用 ServiceStack.Razor 尝试过。
var key = SessionFeature.GetSessionKey() ?? ""; var sess = AppHost.Resolve().Get(key)
希望这可以帮助。