在所有其他页面中,我可以使用以下代码获取Session对象:
@{
var user = Request.GetSession();
}
Authenticated: @user.IsAuthenticated
当我尝试从布局文件中获取会话时,我收到此错误消息“无法编译模板。请查看错误列表以获取详细信息”。
我在这个项目中使用自托管,并且会话对象的使用方式与ASP.NET项目不同。
有人能指出我如何解决这个问题的正确方向吗?
答案 0 :(得分:1)
使用ViewPage的GetSession<T>
进入您的会话。
@inherits ViewPage
@{
var user = GetSession<AuthUserSession>();
}
<h1>@user.IsAuthenticated</h1>
答案 1 :(得分:0)
嗯......如果您只是提供使用_Layout(或父)页面的静态内容(即呈现一个不是由服务“支持”的页面,如主页)我不认为你可以检索Session对象,因为Request将为null。
如果您正在渲染由服务支持的页面,并且它使用_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()。获取(键) 击>
希望这会有所帮助。