1

Nhibernate Facility를 사용하여 Castle Windsor Container와 Nhibernate를 구성하려고합니다. 하지만 난 여기 Nhibernate Facility를 사용하여 Castle Windsor Container와 Nhibernate 구성하기

가 있어요 나의 Web.config의

<castle> 
    <facilities> 
     <facility id="nhibernate" 
       type="Castle.Facilities.NHibernateIntegration.NHibernateFacility, Castle.Facilities.NHibernateIntegration"     
       isWeb="true"> 
     <factory id="nhibernate.factory"> 
      <settings> 
      <item key="connection.provider">NHibernate.Connection.DriverConnectionProvider</item> 
      <item key="connection.driver_class">NHibernate.Driver.SqlClientDriver</item> 
      <item key="connection.connection_string">Data Source=184.106.114.146\calyx;Initial Catalog=ClaimBook;User ID=system;Password=Manager1!;Persist Security Info=True;Max Pool Size=120;Connection Lifetime=120;</item> 
      <item key="dialect">NHibernate.Dialect.MsSql2000Dialect</item> 
      <item key="show_sql">true</item> 
      <item key="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</item> 
      </settings> 
      <resources>    
      <resource assembly="Astute.Framework.Data" /> 
      </resources> 
     </factory> 
     </facility> 
    </facilities> 
    </castle> 

이며 내를 Global.asax에서 나는 다음 줄

container.Kernel.Register(Component.For<ISessionManager>().ImplementedBy<DefaultSessionManager>().Named("nhfacility.sessionmanager")); 
      container.Kernel.Register(Component.For<ISessionFactoryResolver>().ImplementedBy<SessionFactoryResolver>().Named("nhfacility.sessionfactory.resolver")); 
      container.Kernel.Register(Component.For<ISessionStore>().ImplementedBy<WebSessionStore>().Named("nhfacility.sessionstore")); 
      container.Kernel.Register(Component.For<ITransactionManager>().ImplementedBy<DefaultTransactionManager>().Named("nhibernate.transaction.manager")); 

에 추가하지만 난 오류를 다음

받고 있어요

* 지정된 별칭에 대해 ISessionFactory 구성 요소가 매핑되지 않았습니다. nh.facility.default S 압정 추적 : [FacilityException 일 : ISessionFactory 성분 지정된 alias 매핑되지 않았습니다 nh.facility.default] Castle.Facilities.NHibernateIntegration.Internal.SessionFactoryResolver.GetSessionFactory (문자열 별칭) 147 Castle.Facilities.NHibernateIntegration.DefaultSessionManager .CreateSession (문자열 별칭) +65 Castle.Facilities.NHibernateIntegration.DefaultSessionManager.OpenSession (문자열 별칭) 150 Castle.Facilities.NHibernateIntegration.DefaultSessionManager.OpenSession() +37 Castle.Facilities.NHibernateIntegration.Components.Web.SessionWebModule .OnBeginRequest (Object sender, EventArgs e) +124 System.Web.SyncEventExecutionStep.System.Web.SHttpApplication.IExecutionStep.Execute() +148 System.Web.HttpApplication.ExecuteS tep (IExecutionStep 단계, 부울 & 동기화 완료) +75 *

구성에서 누락 된 것이 무엇인지 알 수 없습니다. 이견있는 사람? 등

감사

이므 란

+0

ISessionManager 등을 수동으로 등록하는 이유는 무엇입니까? 시설에서 처리합니다. –

+0

놀랍게도 나는 왜 수동으로 등록해야합니까? 시설별로 처리해야합니다. 일부 구성이 누락 될 수 있습니다. 이 URL http://stw.castleproject.org/%28S%28ta5wga45q0nwdif0d3vk0saf%29%29/Windsor.NHibernate-Facility.ashx에 설명 된 단계를 수행했습니다. 나는 Global.asax에서 뭔가 잘못하고 있다고 확신한다. 어떤 생각? – user585014

+0

nhibernate 기능을 어떻게 등록 할 수 있는지 알고 계십니까? 나는 어떤 모범을 보지 못했다. – user585014

답변

3

ISessionManager, ISessionFactoryResolver는 NHibernate에 시설에 의해 관리되는 구성 요소입니다. 수동으로 등록하지 않아도됩니다.

당신은 수행하여 그 Web.config의에서 시설을 설치할 수 있습니다

container.Install(Configuration.FromAppConfig()); 

자세한 내용은 reference docs about Configuration installers를 참조하십시오.

+0

정말 도움을 주셔서 감사합니다. 위의 줄을 내 global.asax에 추가했지만 여전히 오류가 발생했습니다. 지정된 별칭에 대해 ISessionFactory 구성 요소가 매핑되지 않았습니다. nh.facility.default 내 global.asax에 container = new WindsorContainer(); container.Install (Configuration.FromAppConfig()); ISessionManager의 모든 수동 등록을 제거했습니다. 이제는 좋은 일에 대해 오류가 발생하지 않습니다. 하지만 여전히이 nh.facility.default 오류에 직면 해 있습니다. 어떤 생각. 도와 주셔서 정말 고맙습니다. 감사합니다 – user585014

+1

다음은이 예외를 throw하는 SessionFactoryResolver 클래스의 함수입니다. 공개 ISessionFactory GetSessionFactory (문자열 별칭) \t \t \t \t { \t 문자열 componentKey = alias2Key [별명] String로서; \t \t \t (componentKey == NULL) { \t \t \t \t 던져 새로운 FacilityException는 \t \t \t ("는 ISessionFactory 구성 요소였다"+ \t \t \t \t는 "지정된 별명에 대한 매핑되지 않은 :"+ 별칭) 경우 ; \t \t \t} \t \t \t 창 kernel.Resolve (componentKey); \t \t} – user585014

+0

아 ... 마지막으로 문제를 해결했습니다. web.config에서 매핑 어셈블리를 잘못 제공하고있었습니다. 도와 주셔서 감사합니다 마우리시오 – user585014