【发布时间】:2015-07-22 06:42:44
【问题描述】:
我在我的项目中使用 Owin 和 Katana 进行 OAuth 授权。一切正常,但在 global.asax.cs 文件中,我有一些 IOC 容器代码:
Bootstrapper.IncludingOnly.Assembly(Assembly.Load("Dashboard.Rest")).With.SimpleInjector().With.ServiceLocator().Start();
Container container = Bootstrapper.Container as Container;
GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
我在 Startup.cs 文件中添加了这段代码,但之后我捕获了下一个异常:
类型异常 “Bootstrap.Extensions.Containers.NoContainerException”发生在 Bootstrapper.dll 但未在用户代码中处理
附加信息:无法继续。容器没有被 初始化。
如果我调用某人的 api 方法,我会捕获下一个异常:
无法继续。容器尚未初始化。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详情: Bootstrap.Extensions.Containers.NoContainerException:无法 继续。容器尚未初始化。
来源错误:
第 21 行:public Startup() 第 22 行:{ 第 23 行:
Bootstrapper.IncludingOnly.Assembly(Assembly.Load("Dashboard.Rest")).With.SimpleInjector().With.ServiceLocator().Start(); 第 24 行:Container 容器 = Bootstrapper.Container as 容器;第 25 行:
GlobalConfiguration.Configuration.DependencyResolver = 新 SimpleInjectorWebApiDependencyResolver(容器);
我不知道如何解决它。请帮帮我。谢谢。
更新 我有一些 SimpleInjectorRegisterTypes 类用于连接我的接口和服务:
public class SimpleInjectorRegisterTypes : ISimpleInjectorRegistration
{
public void Register(Container container)
container.RegisterSingle<IApplication, ApplicationService>();
}
}
而且我有为 API 编写逻辑的服务。
在我的控制器中,我创建了构造函数以使用帮助接口调用我的方法:
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);
}
....
【问题讨论】:
-
您使用的是哪种 IoC 容器?
-
@Kamo 我更新了我的问题
-
行
Bootstrapper.Container as Container不是给你null吗? -
@Kamo 我在第一行发现异常 Bootstrapper.IncludingOnly.Assembly(Assembly.Load("Dashboard.Rest")).With.SimpleInjector().With.ServiceLocator().Start();
-
您正在使用某种引导库。您展示的代码不是 Simple Injector API 的一部分。您使用的是哪个引导库?
标签: c# asp.net owin global-asax simple-injector