У меня такая же проблема, как и в this questionAutofac + MVC3 + Html.Action
Сообщение об ошибке: Один экземпляр контроллера «Search.Web.Controllers.AdvancedController» не может быть использован для обработки несколько запросов. Если используется пользовательский контроллер, убедитесь, что он создает новый экземпляр контроллера для каждого запроса.
Код в Global.asax:
protected void Application_Start()
{
var containerBuilder = new ContainerBuilder();
containerBuilder.RegisterType<AdvancedController>().InstancePerHttpRequest();
containerBuilder.RegisterType<MemoryBodyTypeRepository>().As<IBodyTypeRepository>;
containerBuilder.RegisterType<BodyTypePictureClassFinder>().As<IBodyTypePictureClassFinder>();
var container = containerBuilder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
Это некоторый код из AdvancedController:
private readonly IBodyTypeRepository _bodyTypeRepository;
private readonly IBodyTypePictureClassFinder _bodyTypePictureClassFinder;
public AdvancedController(IBodyTypeRepository bodyTypeRepository, IBodyTypePictureClassFinder bodyTypePictureClassFinder)
{
_bodyTypeRepository = bodyTypeRepository;
_bodyTypePictureClassFinder = bodyTypePictureClassFinder;
}
[HttpGet]
public ActionResult Index()
{
var advancedSearchViewModel = new AdvancedSearchViewModel();
return View(advancedSearchViewModel);
}
public ActionResult BodyTypes()
{
// this uses the repositories to create the ViewModel
return View(bodyTypesViewModel);
}
И индекс Вид:
<div>
@Html.Action("BodyTypes","Advanced")
</div>
Если я выполняю этот вид I получите сообщение, указанное выше. Я также попытался удалить экземпляр InstancePerHttpRequest или использовать RegisterControllers вместо того, чтобы повторно их перезагружать, но это тоже не сработало. Если я использую RegisterControllers, то получаю ту же ошибку. Если я удалю экземпляр InstancePerHttpRequest, он каким-то образом выполнит весь просмотр два раза, что тоже не то, что я хотел бы сделать;)
Надеюсь, кто-нибудь может помочь. Это настоящий демонстратор для меня.
Thansk много !!!!
С уважением, Флориан Fanderl