Zarejestrowałem komponent jak to w moim Global.asax.cs:Jak rozwiązać Autofac InstancePerHttpRequest
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<WebWorkContext>().As<IWorkContext>().InstancePerHttpRequest();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
// This is where my error happens, not sure why?
var workContext = container.Resolve<IWorkContext>();
WebWorkContext
klasa:
public class WebWorkContext : IWorkContext
{
// Left out other code
}
IWorkContext
interfejs:
public interface IWorkContext
{
// Left out other code
}
Błąd, który otrzymuję to:
Brak zakresu z dopasowaniem znacznika "httpRequest" jest widoczny z zakresu, w którym wystąpiono o wystąpienie. Zasadniczo oznacza to, że komponent zarejestrowany jako żądanie na HTTP jest ponownie sprawdzany przez komponent SingleInstance() (lub podobny scenariusz). W ramach integracji sieciowej zawsze żądaj zależności od DependencyResolver.Current lub ILifetimeScopeProvider.RequestLifetime, nigdy z samego kontenera .
Jak to działa? Z tego powodu chcę tego w ten sposób, ponieważ kontekst pracy obsługuje takie rzeczy jak pozyskanie obecnego klienta itp.
Jeszcze więcej pytań. Czy rozsądne/najlepsze praktyki są rejestrowane od razu? Czy będą scenariusze, które będę potrzebował dodać więcej komponentów na innym etapie?
Jeżeli starasz się zrobić swoją rozdzielczość? – cecilphillip
Po prostu bawię się, więc zrobiono to bezpośrednio po zbudowaniu kontenera w metodzie uruchamiania aplikacji. Nie wiem, jak zdobyć kontener w mojej aplikacji? –