Używam w moim projekcie Owin i Katana do autoryzacji OAuth. I wszystko działa dobrze, ale w pliku Global.asax.cs Mam kod kontenera IOC:OWIN i Global.asax.cs file
Bootstrapper.IncludingOnly.Assembly(Assembly.Load("Dashboard.Rest")).With.SimpleInjector().With.ServiceLocator().Start();
Container container = Bootstrapper.Container as Container;
GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
dodałem ten kod w Startup.cs pliku, ale po nim złapię następny wyjątek:
An exception of type 'Bootstrap.Extensions.Containers.NoContainerException' occurred in Bootstrapper.dll but was not handled in user code
Additional information: Unable to continue. The container has not been initialized.
i gdybym kogoś zadzwonić metod api złapię następny wyjątek:
Unable to continue. The container has not been initialized.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: Bootstrap.Extensions.Containers.NoContainerException: Unable to continue. The container has not been initialized.
Source Error:
Line 21: public Startup() Line 22: { Line 23:
Bootstrapper.IncludingOnly.Assembly(Assembly.Load("Dashboard.Rest")).With.SimpleInjector().With.ServiceLocator().Start(); Line 24: Container container = Bootstrapper.Container as Container; Line 25:
GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
nie wiem jak to naprawić. Pomóż mi proszę. Dzięki.
UPDATE Mam kilka SimpleInjectorRegisterTypes klasę dla połączyć moje interfejsów i usług:
public class SimpleInjectorRegisterTypes : ISimpleInjectorRegistration
{
public void Register(Container container)
container.RegisterSingle<IApplication, ApplicationService>();
}
}
I mam usługę gdzie piszę logiki dla API.
I w moich kontrolerami utworzyć konstruktor wywołać moja metoda z interfejsami Pomoc:
public class ApplicationController : ApiController
{
private readonly IApplication _application;
public ApplicationController(IApplication application)
{
_application = application;
}
[HttpGet]
public IHttpActionResult GetAllApps()
{
var apps = _application.GetAllApps();
return apps == null ? (IHttpActionResult)Ok(new Application()) : Ok(apps);
}
....
Jaki rodzaj kontenera IoC używasz? – Kamo
@Kamo zaktualizowałem moje pytanie –
Czy nie jest wiersz 'Bootstrapper.Container jako Container', który daje' null'? – Kamo