2010-10-14 9 views
0

J'ai un service Windows qui a un temporisateur et dans le gestionnaire d'événements timer_Elapsed une méthode d'un autre composant sera appelée qui est supposée regarder dans db et obtenir ou mettre à jour certains enregistrements. Ce processus se produira toutes les 2 minutes.J'ai utilisé nhibernate pour l'accès aux données dans le composant. Quand je lance la méthode de test unitaire, il fonctionne très bien ce qui signifie que les configurations et les correspondances sont correctes, mais de service Windows je reçois cette exception:Service Windows et Nhibernate

FluentNHibernate.Cfg.FluentConfigurationException was caught 
    Message="An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.\r\n\r\n" 
    Source="FluentNHibernate" 
    StackTrace: 
     at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration() in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 121 
InnerException: NHibernate.MappingException 
     Message="Could not configure datastore from input stream (XmlDocument)" 
     Source="NHibernate" 
     StackTrace: 
      at NHibernate.Cfg.Configuration.LogAndThrow(Exception exception) 
      at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, String name) 
      at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc, String name) 
      at NHibernate.Cfg.Configuration.AddDocument(XmlDocument doc) 
      at FluentNHibernate.PersistenceModel.Configure(Configuration cfg) in d:\Builds\FluentNH\src\FluentNHibernate\PersistenceModel.cs:line 265 
      at FluentNHibernate.Cfg.FluentMappingsContainer.Apply(Configuration cfg) in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentMappingsContainer.cs:line 141 
      at FluentNHibernate.Cfg.MappingConfiguration.Apply(Configuration cfg) in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\MappingConfiguration.cs:line 64 
      at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration() in d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:line 112 
     InnerException: System.TypeInitializationException 
      Message="The type initializer for 'NHibernate.Util.TypeNameParser' threw an exception." 
      Source="NHibernate" 
      TypeName="NHibernate.Util.TypeNameParser" 
      StackTrace: 
       at NHibernate.Util.TypeNameParser.Parse(String type, String defaultNamespace, String defaultAssembly) 
       at NHibernate.Cfg.ClassExtractor.ClassEntry..ctor(String extends, String className, String entityName, String assembly, String namespace) 
       at NHibernate.Cfg.ClassExtractor.GetClassEntries(XmlDocument document) 
       at NHibernate.Cfg.MappingsQueue.AddDocument(NamedXmlDocument document) 
       at NHibernate.Cfg.Configuration.AddDocumentThroughQueue(NamedXmlDocument document) 
       at NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader, String name) 
       at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, String name) 
      InnerException: System.Threading.ThreadAbortException 
       Message="Exception of type 'System.Threading.ThreadAbortException' was thrown." 
       InnerException: 

Voici le code dans le gestionnaire d'événements timer_elapsed:

private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 


    { 
     lock (processLock) 
     { 
      DoWorkComponent component= new DoWorkComponent(); 
      component.DoWorkMethod(); 
     } 
    } 

Est-ce que quelqu'un sait comment cela peut être réparé? Ai-je besoin de paramètres différents?

Merci à l'avance,

Sacha

+0

Dans ce cas, il pourrait y avoir une différence dans le code ou la configuration du test unitaire et la application. – Paco

+0

Merci pour votre réponse. En fait tout le code lié à la configuration de nhibernate est dans le DoWorkComponent. Le projet de test d'unité et le service de Windows ont une référence au composant. – Sacha

+0

Il est trop difficile de deviner ce qu'est ce code. – Paco

Répondre