2014-09-04 34 views
2

当试图实例化注入的控制器时,我的Web Api API应用程序失败。我正在使用简单注射器。引导注射器如下:简单的喷油器Web Api控制器构造器注入失败

[assembly: WebActivator.PostApplicationStartMethod(typeof(SimpleInjectorWebApiInitializer), "Initialize")] 

namespace WebApi 
{ 
    using System.Web.Http; 
    using SimpleInjector; 
    using SimpleInjector.Integration.WebApi; 

    public static class SimpleInjectorWebApiInitializer 
    { 
     public static void Initialize() 
     {     
      var container = new Container(); 
      InitializeContainer(container); 
      container.RegisterWebApiControllers(GlobalConfiguration.Configuration); 
      container.Verify(); 

      GlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); 
     } 

     private static void InitializeContainer(Container container) 
     { 
      container.RegisterWebApiRequest<ISomething, Something>(); 
     } 
    } 
} 

正在注射的控制器。

namespace WebApi.Controllers 
{ 
    using System.Web.Http; 

    public class SomethingController : ApiController 
    { 
     private readonly ISomething _something; 

     public SomethingController(ISomething something) 
     { 
      _something = something; 
     } 

     public string Get() 
     { 
      return "Hello world"; 
     } 
    } 
} 

我不断收到的错误是:

<Error> 
    <Message>An error has occurred.</Message> 
    <ExceptionMessage> 
    An error occurred when trying to create a controller of type 'SomethingController'. Make sure that the controller has a parameterless public constructor. 
    </ExceptionMessage> 
    <ExceptionType>System.InvalidOperationException</ExceptionType> 
</error> 

什么我在配置Simple Injector失踪?

+0

你能发布完整的堆栈跟踪吗? – Steven 2014-09-05 05:31:36

回答

1

与WebActivator.PostApplicationStartMethod需要存在于同一个目录作为启动项目的输出目录(即你的WebAPI /箱),该属性的组件

控制器无法妥善建造,因为Autofac还没有被设置为依赖关系解析器 - 初始化函数从未被调用,因为程序集未被加载)

相关问题