當您安裝ServiceStack.Host.AspNet NuGet程序包時,會添加ASP.NET PageBase class is a T4 template。
ServiceStack的所有緩存和會話支持都完全獨立於MVC控制器,ASP.NET基本頁面只是通過解析ServiceStack的IOC中的ICacheClient
和ISessionFactory
來實現的。
如果你的MVC控制器和ASP.NET基地頁面自動連線你可以聲明爲公共屬性,他們將通過ServiceStack's IOC得到注入,否則你可以用單直接訪問ServiceStack的IOC:
var cache = Endpoint.AppHost.TryResolve<ICacheClient>();
var typedSession = cache.SessionAs<CustomUserSession>( //Uses Ext methods
HttpContext.Current.Request.ToRequest(), //ASP.NET HttpRequest singleton
HttpContext.Current.Request.ToResponse() //ASP.NET HttpResponse singleton
);
訪問會話都是以相同的方式完成,以下是來自ServiceStack的Service.cs基類的示例代碼:
private ICacheClient cache;
public virtual ICacheClient Cache
{
get { return cache ?? (cache = TryResolve<ICacheClient>()); }
}
private ISessionFactory sessionFactory;
public virtual ISessionFactory SessionFactory
{
get { return sessionFactory ?? (sessionFactory = TryResolve<ISessionFactory>()) ?? new SessionFactory(Cache); }
}
/// <summary>
/// Dynamic Session Bag
/// </summary>
private ISession session;
public virtual ISession Session
{
get
{
return session ?? (session = SessionFactory.GetOrCreateSession(Request, Response));
}
}
/// <summary>
/// Typed UserSession
/// </summary>
private object userSession;
protected virtual TUserSession SessionAs<TUserSession>()
{
return (TUserSession)(userSession ?? (userSession = Cache.SessionAs<TUserSession>(Request, Response)));
}