2010-08-25 12 views
0

J'ai une bibliothèque de classes qui fait tout ce que je fais de NHibernate. Il gère également tout le mappage à l'aide de Fluent NHibernate - aucun fichier de mappage à déployer.FluentNHibernate explose dans Windows Service mais pas sur le site web

Cette bibliothèque de classes est consommée par un certain nombre d'applications, y compris un service Windows en cours d'exécution sur mon ordinateur. Bien que cela fonctionne correctement dans toutes mes applications Web, le service Windows obtient ceci quand il essaie d'utiliser NHibernate:

Une configuration incorrecte ou incomplète a été utilisée lors de la création d'une SessionFactory. Vérifiez la collection PotentialReasons et InnerException pour plus de détails. à FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() à Kctc.NHibernate.KctcSessionFactory.get_SessionFactory() dans C: \ KCTC \ Trunk \ Kctc.NHibernate \ KctcSessionFactory.cs: ligne 28 ... plus trace de pile ...

J'ai vérifié pour un InnerException et il ne semble pas être un. Je n'ai aucune idée de ce qu'est la collection PotentialReasons, et Google ne semble pas être non plus disponible.

Ceci est ma machine dev, donc quand je travaille sur mes applications web ils courent localement (par exemple en utilisant le serveur Web dans Visual Studio). Le fait que le service Windows et mes applications Web de dev fonctionnent sur cette même machine suggère qu'il ne s'agit pas de paramètres de confiance ou de quoi que ce soit.

Quelqu'un peut-il suggérer ce que je devrais essayer? C'est l'un de ceux où je suis tellement perplexe que je ne peux même pas penser à la façon d'obtenir plus d'informations sur le problème.

+0

avez-vous vérifié le InnerException. il y a des informations spécifiques sur votre erreur là-bas. – devnull

+0

Oui. Il ne semble pas y avoir une exception interne. – David

Répondre

0

J'ai découvert le problème. Le service ne s'est pas déployé avec le fichier NHibernate.ByteCode.LinFu.dll requis.

Je semble avoir un problème persistant avec le compilateur Visual Studio qui ne copie pas toujours les dépendances indirectes (c'est-à-dire les DLL requises par les bibliothèques de classes requises par l'application) dans le dossier de sortie pendant la génération. J'aurais dû y penser plus tôt.

Merci d'avoir creusé la tête en mon nom les gars.

+0

J'ai le même problème avec dlls & VS. –

+0

Dieu merci! JE NE SUIS PAS SEUL! – David

0

Juste une supposition sauvage. NHibernate récupère le fichier hibernate.cfg.xml dans le répertoire d'exécution. Avez-vous configuré le répertoire d'exécution du service pour qu'il puisse trouver ce fichier?

+0

J'ai peur de ne pas comprendre la question. Il n'y a pas de fichier de configuration car j'utilise FluentNHibernate. Comment configurez-vous le 'répertoire d'exécution'? – David

0

Je parie que le nom de la chaîne de connexion est absente de la app.config. Pour moi, ce message est presque exclusivement une chaîne de connexion manquante.

Ciblez-vous la même base de données ou pourrait-il être une sorte de non-concordance de schéma entre les bases de données?

Pourrait-il y avoir des problèmes d'authentification sur le service que vous utilisez l'authentification Windows où il ne peut pas être utilisé (ou l'authentification SQL qui ne fonctionne pas)?

Il est difficile de dire quand il n'y a pas de code, juste une exception!

EDIT Etes-vous déjà en train d'utiliser HttpContext, HostingEnvironment ou autre chose spécifique à "web"?

+0

Malheureusement, c'est là. Je sais que les fonctionnalités ADO.NET de base fonctionnent car j'ai toujours du code d'accès aux données pré-NHibernate en cours d'exécution dans le service. Mais merci de demander! – David

+0

Ajout d'autres questions. Vous ne nous donnez pas beaucoup d'informations David :) – mhenrixon

+0

Désolé, je ne suis pas sûr de ce que je dois fournir car je suis assez coincé. C'est la même base de données que le système live. La bibliothèque de classes n'exige aucune authentification. Je n'ai pas fourni le code de configuration parce qu'il fonctionne pour les applications web, donc sûrement ça doit être correct? S'il vous plaît laissez-moi savoir ce que vous aimeriez que je poste. – David