J'ai un problème. Je n'arrive pas à configurer spring avec nhibernate. Il y a l'erreur message

Error creating context 'spring.root': Instance failure.
Voici ma configuration

web.config



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 <configuration>
      <configSections>
        <sectionGroup name="spring">
          <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
          <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
          <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>
        </sectionGroup>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
      </configSections>
      <spring>
        <parsers>
          <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
        </parsers>
        <context>
          <resource uri="~//SpringSetup.xml"/>
        </context>
      </spring>
      <appSettings></appSettings>
 
      <system.web>
        <compilation debug="true" targetFramework="4.5" />
        <httpRuntime targetFramework="4.5" />
      </system.web>
      <log4net>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%-5level %logger - %message%newline"/>
          </layout>
        </appender>
 
        <!-- Set default logging level to DEBUG -->
        <root>
          <level value="DEBUG"/>
          <appender-ref ref="ConsoleAppender"/>
        </root>
 
        <!-- Set logging for Spring.  Logger names in Spring correspond to the namespace -->
        <logger name="Spring">
          <level value="INFO"/>
        </logger>
 
        <logger name="Spring.Data">
          <level value="DEBUG"/>
        </logger>
 
        <logger name="NHibernate">
          <level value="DEBUG"/>
        </logger>
      </log4net>
SpringSetup.xml



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="utf-8" ?>
    <objects xmlns="http://www.springframework.net"    xmlns:db="http://www.springframework.net/database">
      <!-- Database and NHibernate Configuration -->
      <db:provider id="DbProvider"
                       provider="SqlServer-2.0"
                       connectionString="Data Source=PC-PROF\\SQLEXPRESS;Database=db_workn;Trusted_Connection=False;"/> 
      <!-- NHibernate SessionFactory configuration -->
      <object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate21">
        <property name="DbProvider" ref="DbProvider"/>
        <property name="MappingAssemblies">
          <list>
            <value>Work</value>
          </list>
        </property>
        <property name="HibernateProperties">
          <dictionary>
            <entry key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
            <entry key="dialect" value="NHibernate.Dialect.MsSql2008Dialect"/>
            <entry key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
          </dictionary>
        </property>
      </object>
      <!-- gestionnaire de transactions -->
      <object id="transactionManager"
            type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate21">
        <property name="DbProvider" ref="DbProvider"/>
        <property name="SessionFactory" ref="NHibernateSessionFactory"/>
      </object>
 
      <!-- Hibernate Template -->
      <object id="HibernateTemplate" type="Spring.Data.NHibernate.Generic.HibernateTemplate">
        <property name="SessionFactory" ref="NHibernateSessionFactory" />
        <property name="TemplateFlushMode" value="Auto" />
        <property name="CacheQueries" value="true" />
      </object>
 
      <object id="uDao"
              type="Work.Dao.UserDao,Work" />
 
      <object id="uMng"
              type="Work.Managers.UserManager,
              Work" />
      <object id="userDao" type="Work.Dao.UserDao, Work" init-method="init" destroy-method="destroy">
        <property name="HibernateTemplate" ref="HibernateTemplate"/>
      </object>
    </objects>
Abstract Dao

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
namespace Work.Dao
    {
        public class AbstractDao<T> : HibernateDaoSupport where T : class
        {
            private ISessionFactory GetSessionFactory()
            {
                return null;
            }
            [Transaction(ReadOnly = true)]
            public IList<T> GetAll()
            {
                return
                     HibernateTemplate.Find<T>("select * from user");                  
            }
        }
    }
User Dao.cs

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
  namespace Work.Dao
    {
        public class UserDao : AbstractDao<User>
        {
        }
    }
User.hbm.xml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
  <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                       assembly="Work"
                       namespace="Work.Domains">
      <class name="User" table="UserAccount">
        <id name="UserId">
          <generator class="native" />
        </id>
        <property name="FirstName" />
        <property name="LastName" />
      </class>
    </hibernate-mapping>
User.hbm.xml est dans les propriété resource incorporé et est "pas copier dans le repertoire de sortie"
Spring.Net est contenu et "toujours copier"

Mes libs



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
  +Antlr3.Runtime
       +Common.Logging
       +Iesi.Collections
       +LinFu.DynamicProxy
       +log4net
       +NHibernate
       +NHibernate.DomainModel
       +NHibernate.Test
       +Spring.Aop
       +Spring.Core
       +Spring.Data
       +Spring.Data.NHibernate21
Mon erreur est quand je passe dans ContextRegistry.GetContext()

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 namespace Work.Managers
    {
        public class UserManager
        {
            public IList<User> GetAll()
            {
                UserDao userDao = (UserDao)ContextRegistry.GetContext().GetObject("userDao");// (UserDao)Utility.AppCtx("uDao");
                IList<User> List = userDao.GetAll();
 
                return List;
            }
        }
    }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    <ExceptionMessage>
Error creating object with name 'NHibernateSessionFactory' defined in 
'file [C:\Users\marie\Documents\Visual Studio 2013\Projects\Test\Test4\Work\Work\SpringSetup.xml] line 15' : Initialization of object failed : Instance failure.
</ExceptionMessage>
<ExceptionType>Spring.Objects.Factory.ObjectCreationException</ExceptionType>
Regards