我已經得到了同樣的問題,如在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>
如果我執行此我查看得到上面的消息。我也嘗試刪除InstancePerHttpRequest或使用RegisterControllers,而不是明確地重新安裝它們,但那也不起作用。 如果我使用RegisterControllers,我會得到相同的錯誤。如果我刪除InstancePerHttpRequest它以某種方式執行整個景觀的兩倍,這也不是我想要做什麼;)
我希望有人能幫助。這對我來說是一個真正的Showstopper。
Thansk很多!!!!
問候, 弗洛裏安Fanderl