2009-09-30 7 views
5

enregistrement MISE À JOUR:IIS7 et Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule problèmes

à Windsor 2.5 le nom d'assemblage est Castle.Windsor pas Castle.MicroKernel


Je suis en train de déployer un ASP.NET MVC application à IIS7 et j'obtiens cette erreur:

Looks like you forgot to register the http module Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule Add '' to the section on your web.config

Mon httpModules contient:

<httpModules> 
    <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.MicroKernel"/> 
</httpModules> 

section des gestionnaires de system.webServer contient

<handlers> 
    <remove name="PerRequestLifestyle"/> 
    <add name="PerRequestLifestyle" preCondition="managedHandler" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Microkernel" verb="*" path="*.castle" /> 
</handlers> 

j'ai ajouté la partie verb="*" path="*.castle" que je recevais des erreurs quand ils ont été portés disparus. Je ne sais pas si leurs valeurs sont correctes.

Quelqu'un sait quel est le problème ici?

+1

PerWebRequestLifestyleModule est un module, pas un gestionnaire. Retirez-le de la section des gestionnaires. –

+0

Essayez d'inclure la version, la culture et PublicKeyToken dans la déclaration du module. –

+0

Merci, j'ai supprimé la déclaration du module. La version, la culture et PublicKeyToken n'étaient pas nécessaires. Je devais aussi ajouter en tant que gestionnaire. Également dû créer le répertoire 'C: \ TempImageFiles' pour le faire fonctionner. –

Répondre

6

Vous pouvez résoudre le problème en enregistrant le module HTTP dans configuration/system.webServer/modules au lieu de configuration /system.web/httpModules.

1

Il m'a fallu un certain temps pour trouver une solution pour cela, mais tout ce que je devais était mise à jour le dll étant referneced dans le web.config ...

En utilisant Castle.Core et Windsor 2.5.1 ...

4

Mon problème était que je bootstraping le récipient dans Application_Start, les modules ne sont pas initialisés à ce moment ASP.NET donc quand vous essayez d'enregistrer/utiliser PerWebRequest mode de vie, il jette cette exception car il détecte que le module n'a pas été initialisé .

J'ai fini par utiliser this library de Castle Contrib qui fournit le mode de vie HybridPerWebRequestTransient qui, s'il n'est pas initialisé pour le moment, utilise le style de vie Transient.

Vous avez juste à télécharger la bibliothèque (comme zip est ok) ouvrir la solution et la compiler, récupérer la DLL générée et la référencer dans votre projet. Si vous utilisez Castle.Windsor version sur 3.0, vous devrez supprimer la référence actuelle et ajouter la référence à la version que vous utilisez (j'utilisais 3.1 et je n'ai eu aucun problème).

Voici le code à utiliser le mode de vie: .LifeStyle.HybridPerWebRequestTransient()