mam (miękka) projekt jest gospodarzem MVC WebAPI owin, który używa Jedności rozwiązywania zależności kontroleraJak przekazać kontekst Owin do Repo jest wstrzykiwany do kontrolera Api
które wyglądają jak to
public class PacientaiController : ODataController
{
private readonly IEntityRepo<Ent.Pacientas> repo;
public PacientaiController(IEntityRepo<Ent.Pacientas> repo)
{
this.repo = repo;
}
Problem, który próbuję rozwiązać - jak przekazać "OwinContex" do repozytorium.
public class PacientasEntityRepo:IEntityRepo<Pacientas>,IDisposable
{
public PacientasEntityRepo(IOwinContext ctx)
{
.........
Gdy próbuję zarejestrować go w ten sposób w Startup.cs
Container.RegisterType<IOwinContext>(new InjectionFactory(o => HttpContext.Current.GetOwinContext()));
otrzymuję null ref, mówiąc, że HttpContext.Current
jest NULL
Główną ideą tutaj jest przekazać aktualnie uwierzytelniony użytkownik do repozytorium, ponieważ Repo hostuje logikę do odpytywania bazy danych, w zależności od użytkownika. (powiedz, jeśli użytkownik jest administratorem, a następnie zwróć te dane, jeśli użytkownik jest gościem - zwróć te dane)
Chodzi o to, że jest to samodzielny host!
Zignoruj moją odpowiedź, nie przeczytałem * hostowanej * części – Jcl
Nie mogę być jedyną osobą, która czyta to i myśli tam zapach, konkretnie, o Repo potrzebującym dostępu do kontekstu * OWIN *? Tak, może być konieczne podjęcie pewnych decyzji w oparciu o bieżącego użytkownika, ale z pewnością uzyskanie tych informacji i po prostu ujawnienie "IPrincipal" lub coś podobnego do repo będzie miało więcej sensu? –
Tak, może. W żaden sposób nie wpływa to na problem, ponieważ nadal potrzebuję uzyskać dostęp do OwinContext lub RequestContext, wyjąć bieżącą wartość główną i przekazać ją do IoC w celu wstrzyknięcia do budowanej zależności. Nie ma znaczenia, czy jest to IOwinContext lub IPrinciple, czy IUserRole. Nadal żyje w "RequestsContext". Pytanie dotyczy zasad komunikacji w takiej lub podobnej sytuacji. – Marty