2014-06-30 105 views
1

我试图建立在Azure上我的网络API,一切都在本地工作的文件,但是当我部署到Azure,我得到了以下错误消息:autofac不是的WebAPI 2个工作在Azure网站

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

该网站是一个普通的天蓝色网站,而不是一个工人的规则。

这是我Autofac bootstraper类:

var builder = new ContainerBuilder(); 
     builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); 
     builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest(); 
     builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>().InstancePerRequest(); 
     builder.RegisterAssemblyTypes(typeof(DestinationRepository).Assembly).Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces().InstancePerRequest(); 
     builder.RegisterAssemblyTypes(typeof(DestinationService).Assembly).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces().InstancePerRequest(); 

     builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration); 
     IContainer container = builder.Build(); 

     // Create the depenedency resolver. 
     var resolver = new AutofacWebApiDependencyResolver(container); 

     // Configure Web API with the dependency resolver. 
     GlobalConfiguration.Configuration.DependencyResolver = resolver; 

我的控制器:

public class DestinationController : ApiController 
{ 
    private readonly IDestinationService _destinationService; 

    public DestinationController(IDestinationService destinationService) 
    { 
     this._destinationService = destinationService; 
    }} 

感谢您的帮助。

回答

1

打开自定义错误消息后,我发现如果其中一个注入的依赖项抛出异常,您将看到上面的错误消息。但是原始的错误信息会出现在内部例外中,您可以通过从web.config中关闭自定义错误来查看原始错误消息。