无法使用Simple Injector注册Api控制器?

我有一个使用Simple Injector的WebApi,它工作得非常好,但我必须在项目中实现OAuth。 现在我已经这样做了,我的ApiControllers给了我一个像Simple Injector这样的错误,现在已经正确设置了

我有我的Start.cs文件

public class Startup { public void Configuration(IAppBuilder app) { // Web API configuration and services HttpConfiguration config = new HttpConfiguration(); Container container = SimpleInjectorConfig.Initialize(app); ConfigureAuth(app, container); WebApiConfig.Register(config); app.UseWebApi(config); } public void ConfigureAuth(IAppBuilder app, Container container) { var OAuthServerOptions = new OAuthAuthorizationServerOptions() { AllowInsecureHttp = true, TokenEndpointPath = new PathString("/token"), AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), Provider = container.GetInstance() }; // Token Generation app.UseOAuthAuthorizationServer(OAuthServerOptions); app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); } } 

在我的SimpleInjectorConfig文件中

 public class SimpleInjectorConfig { public static Container Initialize(IAppBuilder app) { var container = GetInitializeContainer(app); container.Verify(); GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); return container; } public static Container GetInitializeContainer(IAppBuilder app) { var container = new Container(); container.RegisterSingle(app); container.Register(); // myService container.Register(); // myRepository container.Register(); // This is an extension method from the integration package. container.RegisterWebApiControllers(GlobalConfiguration.Configuration); return container; } } public class ApiAuthorizationServerProvider : OAuthAuthorizationServerProvider { private IService _service; public ApiAuthorizationServerProvider(IService service) { _service = service; } public override async Task ValidateClientAuthentication( OAuthValidateClientAuthenticationContext context) { context.Validated(); } public override async Task GrantResourceOwnerCredentials( OAuthGrantResourceOwnerCredentialsContext context) { context.OwinContext.Response.Headers .Add("Access-Control-Allow-Origin", new[] { "*" }); User user = _service.Query(e => e.Email.Equals(context.UserName) && e.Password.Equals(context.Password)).FirstOrDefault(); if (user == null) { context.SetError("invalid_grant", "The user name or password is incorrect."); return; } var identity = new ClaimsIdentity(context.Options.AuthenticationType); identity.AddClaim(new Claim("sub", context.UserName)); identity.AddClaim(new Claim("role", "user")); context.Validated(identity); } } 

现在我的项目构建正常,但我无法测试OAuth是否正在工作,因为我无法连接到我的ApiController。 我还没有将[Authorize]标签添加到Controller,所以我应该可以访问它。

这是我的控制器

 public class MyController : ApiController { private IService _service; public MyController(IService service) { _service = service; } public IHttpActionResult Get() { // get all entities here via service return Ok(list); } } 

我得到的错误消息说

尝试创建“MyController”类型的控制器时发生错误。 确保控制器具有无参数的公共构造函数。

我以为这会通过注册

 container.RegisterWebApiControllers(GlobalConfiguration.Configuration);