Ekleme/güncelleştirme/silme işlemlerinde değişiklik izleme alanlarını otomatik olarak güncelleştirmeleri için UserAuthSession
nesnesinin geçerli örneğini (ServiceStack'ın AuthUserSession
türetilmiş) veri erişim havuzlarına enjekte etmenin doğru yolunu bulmaya çalışıyorum.ServiceStack AuthSession'ı depo sınıflarıma nasıl enjekte edebilirim?
Ben bir no-beyin olurdu benim hizmet kodunda newing-up depoları olsaydı, tıpkı olacaktır:
var repo = new MyRepository(SessionAs<UserAuthSession>());
Ancak, benim depoları hizmetlerine otomatik kablolu (enjekte) vardır,
Service
sınıf için ServiceStack koduna bakarak Şimdi
public class AppHost : AppHostBase
{
public override void Configure(Container container)
{
container.Register<ICacheClient>(new MemoryCacheClient());
container.Register<IRepository>(c =>
{
return new MyRepository(**?????**); <-- resolve and pass UserAuthSession
}
}
}
,:
yüzdenUserAuthSession
, örneğin IOC konteyner ile deponun kayıt için tanımlanan lambda bir yerden yakaladı zorundadır
private object userSession;
protected virtual TUserSession SessionAs<TUserSession>()
{
if (userSession == null)
{
userSession = TryResolve<TUserSession>(); //Easier to mock
if (userSession == null)
userSession = Cache.SessionAs<TUserSession>(Request, Response);
}
return (TUserSession)userSession;
}
Ben şimdiki Request
ve Response
dayalı önbelleğe oturumu arar olduğunu görebilirsiniz, ancak bu lambda bana kullanılamaz.
Çözüm nedir? Yoksa problemi tamamen yanlış bir açıdan ele alıyorum mı?
Ben 'JsonServiceClient' kullanarak kodumu test ediyorum belirtmeyi unuttum DEĞİL doğrudan hizmet yöntemlerini çağırarak. Bu yüzden, HttpContext.Current' lambda'da bulunmayı bekliyordum, ama her zaman boş. –