我正在嘗試使用Nhibernate工具來配置Nhibernate和Castle Windsor Container。但我有使用Nhibernate工具配置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組件未被映射爲指定的別名:nh.facility.default] Castle.Facilities.NHibernateIntegration.Internal.SessionFactoryResolver.GetSessionFactory(String alias)+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.HttpApplication.IExecutionStep.Execute()+148 System.Web.HttpApplication.ExecuteS tep(IExecutionStep step,布爾型& completedSynchronously)+75 *
我不知道我在配置中缺少什麼。有什麼想法嗎?
感謝
伊姆蘭
你爲什麼要手動註冊ISessionManager等?該設施負責照顧。 – 2011-02-15 12:55:34
我很驚訝,爲什麼我需要手動註冊。它應該由設施來處理。可能是我錯過了一些配置。我已按照此URL http://stw.castleproject.org/%28S%28ta5wga45q0nwdif0d3vk0saf%29%29/Windsor.NHibernate-Facility.ashx中描述的步驟操作。我敢肯定,我在Global.asax中做錯了什麼。任何想法? – user585014 2011-02-15 14:52:29