나는 this questionAutofac + MVC3 + Html.Action
에 오류 메시지가 같은 문제가 생겼어요 : 컨트롤러 'Search.Web.Controllers.AdvancedController'의 단일 인스턴스를 처리하는 데 사용할 수 없습니다 여러 요청. 사용자 정의 컨트롤러 팩토리가 사용 중이면 각 요청에 대해 컨트롤러의 새 인스턴스를 생성해야합니다. 나는이보기 I을 실행하면
<div>
@Html.Action("BodyTypes","Advanced")
</div>
: Global.asax에있는
코드 :
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);
}
그리고 색인보기 :
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에서 일부 코드입니다 위에서 언급 한 메시지를 받으십시오. InstancePerHttpRequest를 제거하거나 명시 적으로 regstering하는 대신 RegisterControllers를 사용하려고 시도했지만 작동하지 않았습니다. RegisterController를 사용하는 경우에도 동일한 오류가 발생합니다. InstancePerHttpRequest를 제거하면 어떻게 든 전체보기가 두 번 실행됩니다. 이는 내가하고 싶은 것이 아닙니다;)
아무도 도와 줄 수 있기를 바랍니다. 이것은 나를위한 진정한 Showstopper입니다.
Thansk a lot !!!!
감사합니다, 플로리안 Fanderl