У меня есть следующий файл запуска (Startup.cs):
public void Configuration(IAppBuilder app)
{
AutofacConfig.RegisterIoc();
HttpConfiguration config = new HttpConfiguration();
ConfigureOAuth(app); //This must come first before we load the WebApiConfig below.
WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
Как видите, я регистрирую конфигурацию autofac.Код для моей конфигурации autofac выглядит следующим образом: (AutofacConfig.cs)
public class AutofacConfig
{
public static void RegisterIoc()
{
var builder = GetBuilder();
var container = builder.Build();
// Set dependency resolver for MVC
//DependencyResolver.SetResolver(new AutofacWebApiDependencyResolver(container));
// Set dependency resolver for Web API
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
public static ContainerBuilder GetBuilder()
{
var builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
//builder.RegisterFilterProvider();
var assemblies = BuildManager.GetReferencedAssemblies().Cast<Assembly>().Where(x => x.FullName.Contains("API")).ToArray();
builder.RegisterAssemblyTypes(assemblies)
.AsImplementedInterfaces()
.InstancePerRequest();
return builder;
}
}
Но когда я запускаю свое приложение и пытаюсь получить доступ к методу в моем контроллере, я получаю следующую ошибку:
Произошла ошибка при попытке создать контроллер типа 'DataController'.Убедитесь, что в контроллере есть открытый конструктор без параметров.
Я пытался отладить файл startup.cs либо для проверки его выполнения, и для этого.
До того, как я началзарегистрировать autofac в Global.asax, но поскольку я использую OAuth, я перешел из Global.asax и вместо этого создал файл запуска.Я думаю, это как-то связано с этим?
Мой контроллер выглядит так:
private readonly IItemModelService _itemModelService;
public DataController(IItemModelService itemModelService)
{
this._itemModelService = itemModelService;
}
Stacktrace:
на System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (запрос HttpRequestMessage, HttpControllerDescriptor controllerDescriptor, тип controllerType) в System.Web.Http.Controllers.HttpControllerDescriptor..Expressions.Expression.New (Тип type) в System.Web.Http.Internal.TypeActivator.Create [TBase] (Type instanceType) в System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator (запрос HttpRequestMessage)1 & активатор) в System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (запрос HttpRequestMessage, HttpControllerDescriptor controllerDescriptor, тип controllerType)