2008-11-03 21 views
24

Używam windsor DI framework w jednym z moich projektów MVC. Projekt działa dobrze, kiedy próbował uciec z Visual Studio 2008.Wygląda na to, że zapomniałeś zarejestrować moduł http z Windsor Castle z IIS7

Ale gdy próbowałem uruchomić projekt tworzenia aplikacji w IIS7 potem otrzymałem następujący komunikat o błędzie:

Wygląda jakbyś zapomniał zarejestrować http moduł Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule dodaj '< dodać name = "PerRequestLifestyle" type = "Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.MicroKernel"/>' do sekcji na internecie. config

Ale ten moduł już istnieje w sekcji httpmodule pliku web.config.

Czy ktoś wie, co muszę zrobić, aby wyeliminować ten problem.

Odpowiedz

35

Spróbuj również dodać to do sekcji system.webServer?

<configuration> 
    <system.web> 
     <httpModules> 
      <add name="PerRequestLifestyle" type="..." /> 
     </httpModules> 
    </system.web> 
    <system.webServer> 
     <modules> 
      <add name="PerRequestLifestyle" type="..." /> 
     </modules> 
    </system.webServer> 
</configuration> 
+0

Dzięki. Rozwiązać problem. –

+4









< dodaj nazwę = "PerRequestLifestyle" type = "..." />



... dla mnie. – Artiom

+0

należy poprawić jako pod . –

4

Pomogło mi:

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

Miałem ten sam błąd, ale to spowodowane przez innego powodu:

Próbowałem rozwiązać IService w Application_Start do przetwarzania klasy niestandardowej trasy, ale typ dla IService został zarejestrowany pod numerem PerWebRequestLifestyle. Podsystem routingu pozostaje na wyższym poziomie niż żądanie sieciowe, a obiekty nie istnieją w czasie przetwarzania trasy.

+8

Bardzo duży +1. Ja również próbowałem żonglować PerWebRequest Lifestyles w moim Application_Start i powodował on fałszywe alarmy dotyczące tego błędu. – Kivin

+2

To samo tutaj. Przeniesienie rejestracji do BeginRequest rozwiązało problem w moim przypadku. – RMD

+0

Zamiast przejść do BeginRequest utworzyłem hybrydowy cykl życia, aby użyć przejściowego, gdy HtttpContext.Request jest zerowy. – Cookie

2

Znalazłem ten problem w moim środowisku deweloperów. Co warto zauważyć, jest to tag:

<validation validateIntegratedModeConfiguration="false"/> 

Choć oczywiście robi to, co jest napisane na opakowaniu, może zatrzymać te brzydkie błędy wyświetlane. Zakładając, że reszta Twojej konfiguracji działa, Ok.

Co pracował dla mnie:

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"> 
    <remove name="PerRequestLifestyle"/> 
    <add name="PerRequestLifestyle" type="Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule, Castle.Windsor"/> 
    </modules> 
</system.webServer>