0
내 계정 컨트롤러에서 nhibernate Isession 개체를 얻으려고하지만 내 컨트롤러 팩토리 클래스 인 StructureMapControllerFactory의 CreateContoller 메서드에서 "컨트롤러에 매개 변수가 없는지 확인하십시오 공공 생성자. " 다른 컨트롤러에서는 잘 작동하지만 Global.asax 파일에서AccountController 유창한 nhibernate 및 StructureMap 작동하지 않는 것
public class StructureMapControllerFactory : DefaultControllerFactory
{
public override IController CreateController(RequestContext requestContext, string controllerName)
{
try
{
var controllerType = base.GetControllerType(requestContext, controllerName);
return ObjectFactory.GetInstance(controllerType) as IController;
}
catch (Exception)
{
//Use the default logic
return base.CreateController(requestContext, controllerName);
}
}
}
와 코드 조각 : 아래
내 StructureMapControllerFactory 클래스입니다protected void Application_Start()
{
ControllerBuilder.Current.SetControllerFactory(new SmartHRMS.Utility.StructureMapControllerFactory());
StructureMap.ObjectFactory.Initialize(x =>
{
x.For<NHibernate.ISessionFactory>()
.Singleton()
.Use(SmartHRMS.Utility.SessionHelper.GetSessionFactory());
x.For<NHibernate.ISession>()
.HttpContextScoped()
.Use(context => context.GetInstance<NHibernate.ISessionFactory>().OpenSession());
});
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
protected void Application_EndRequest()
{
StructureMap.ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects();
}
예외 : 나에게 힌트를 준 mookid8000에
{"An error occurred when trying to create a controller of type 'HCM.Controllers.AccountController'. Make sure that the controller has a parameterless public constructor."}
당신이 게시 예외 메시지가 DefaultControllerFactory'이 컨트롤러를 인스턴스화하려고'에서이다. 실제 문제가 무엇인지 확인하기 위해 StructureMap에 대한 호출 주위에서'try-catch' 물건을 제거해보십시오. – mookid8000
네, 트릭을했는데, 어떻게 해결했는지 보여주는 답변을 올렸습니다. – Waqas