如何从ServiceStack中的布局文件获取会话对象?
从所有其他网页,我可以得到Session对象的保持与此代码:如何从ServiceStack中的布局文件获取会话对象?
@{
var user = Request.GetSession();
}
Authenticated: @user.IsAuthenticated
当我尝试从布局文件中获取的会议上,我得到这个错误消息“无法编译模板检查详细错误清单“。
我在这个项目上使用自托管,并且会话对象没有以与ASP.NET项目相同的方式使用。
有人能告诉我如何解决这个问题的正确方向吗?
那么......如果你只是提供使用_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
这应该在ASP的_Layout.cshtml文件工作使用ServiceStack的.NET MVC/Razor应用程序。我没有用ServiceStack.Razor试过它。
var key = SessionFeature.GetSessionKey()? “”; var sess = AppHost.Resolve()。获取(key)
希望这会有所帮助。
使用ViewPage的GetSession<T>
进入您的会话。
@inherits ViewPage
@{
var user = GetSession<AuthUserSession>();
}
<h1>@user.IsAuthenticated</h1>
我正在使用自托管,并且会话对象的行为与ASP.NET解决方案的行为不同。 – Fossmo 2013-05-08 06:41:28
我忘了提及我正在使用自托管。我用这个解决方案得到了一个NotImplemented错误(只支持通过单例可访问的ASP.NET请求)。 – Fossmo 2013-05-08 06:44:05
根据附加上下文编辑答案。 – paaschpa 2013-05-08 17:29:18
这似乎不起作用。我改变了我的页面结构。我现在使用@ Html.Partial而不是_Layout。这工作。 – Fossmo 2013-05-10 08:14:01