ich habe ein MVC WebAPI owin (Soft-hosted) Projekt, das Unity verwendet für die Lösung Controller AbhängigkeitenWie Owin Zusammenhang mit einem Repo wird in Api Controller injiziert
, die wie dieses
public class PacientaiController : ODataController
{
private readonly IEntityRepo<Ent.Pacientas> repo;
public PacientaiController(IEntityRepo<Ent.Pacientas> repo)
{
this.repo = repo;
}
aussehen passieren
das Problem, das ich versuche zu lösen - ist, wie übergebe ich 'OwinContex' in ein Repo.
public class PacientasEntityRepo:IEntityRepo<Pacientas>,IDisposable
{
public PacientasEntityRepo(IOwinContext ctx)
{
.........
Wenn ich versuche, es so registrieren im Startup.cs
Container.RegisterType<IOwinContext>(new InjectionFactory(o => HttpContext.Current.GetOwinContext()));
ich einen null ref erhalten, sagen, dass HttpContext.Current
NULL ist
Die Idee hier ist die Zeit passieren authentifizierter Benutzer für den Repo, da Repo-Host die Logik für die Abfrage der Datenbank abhängig von dem Benutzer. (Sagen Sie, wenn der Benutzer Admin ist, dann geben Sie diese Daten zurück, wenn der Benutzer Gast ist - geben Sie diese Daten zurück)
Der Punkt ist - das ist ein Selbst-Host!
Ignoriere meine Antwort, ich habe den * selbst gehosteten * Teil nicht gelesen – Jcl
Ich kann nicht die einzige Person sein, die das liest und denkt, dass es einen Geruch gibt, speziell über den Repo, der Zugang zum * OWIN * -Kontext benötigt? Ja, es könnte notwendig sein, einige Entscheidungen basierend auf dem aktuellen Benutzer zu treffen, aber sicher diese Informationen zu erhalten und nur ein "IPrincipal" oder etwas ähnliches dem Repo auszusetzen, würde mehr Sinn machen? –
Ja könnte es. Es betrifft das Problem sowieso nicht, weil ich immer noch auf den OwinContext oder RequestContext zugreifen muss, den aktuellen Principal herausnehmen muss und es dem IoC geben muss, um in die Abhängigkeit, die erstellt wird, zu injizieren. Es spielt keine Rolle, ob es sich um einen IOwinContext oder IPrinciple oder IUserRole handelt. Es lebt noch im 'RequestsContext'. Die Frage betrifft die Kommunikationsprinzipien in einer solchen oder ähnlichen Situation. – Marty