2009-09-30 11 views
5

UPDATE:IIS7 & Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule rejestrujące problemy

w Windsor 2,5 nazwa zespołu jest Castle.Windsor nie Castle.MicroKernel


próbuję wdrożyć ASP.NET MVC do IIS7 i otrzymuję ten błąd:

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

Moje httpModules zawiera:

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

system.webServer sekcja koparki zawiera

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

dodałem verb="*" path="*.castle" część jak mi się błędy, kiedy brakowało. Nie jestem pewien, czy ich wartości są poprawne.

Ktoś wie, na czym polega problem?

+1

PerWebRequestLifestyleModule jest moduł, a nie obsługi. Usuń go z sekcji obsługi. –

+0

Spróbuj podać wersję, kulturę i klucz publicznyKey w deklaracji modułu. –

+0

Dzięki, usunąłem deklarację modułu. Wersja, Culture i PublicKeyToken nie były konieczne. Musiałem również dodać jako handler. Musiał również utworzyć katalog "C: \ TempImageFiles", aby działał. –

Odpowiedz

6

Można rozwiązać ten problem poprzez zarejestrowanie modułu HTTP w konfiguracji/system.webServer/modułów zamiast konfiguracji/system.web/httpModules.

1

Zajęło mi trochę czasu, aby znaleźć rozwiązanie dla tego, ale wszystko, co musiałem była zmiana dll jest referneced w web.config ...

Korzystanie Castle.Core i Windsor 2.5.1 ...

4

Moim problemem było to, że bootstraping pojemnik w Application_Start, Moduły nie są inicjowane w tym momencie w ASP.NET, więc przy próbie zarejestrować/używać PerWebRequest Lifestyle rzuca ten wyjątek, ponieważ wykrywa, że ​​moduł nie została zainicjowana .

Skończyło się na użyciu this library z Castle Contrib, która zapewnia styl życia HybridPerWebRequestTransient, który jeśli nie zostanie zainicjowany, korzysta z trybu życia przejściowego.

Trzeba tylko pobrać bibliotekę (ponieważ zip jest w porządku) otworzyć rozwiązanie i skompilować je, pobrać wygenerowaną bibliotekę DLL i umieścić ją w swoim projekcie.

Jeśli używasz wersji Castle.Windsor powyżej 3.0, będziesz musiał usunąć bieżące odniesienie do niej i dodać odniesienie do wersji, której używasz (korzystałem z wersji 3.1 i nie miałem żadnych problemów).

Jest to kod używać Lifestyle: .LifeStyle.HybridPerWebRequestTransient()