2009-09-30 138 views
5

UPDATE:IIS7和Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule註冊問題

在溫莎2.5程序集的名稱是Castle.WindsorCastle.MicroKernel


我想部署一個ASP.NET MVC應用程序IIS7和我得到這個錯誤:

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

我的httpModules包含:

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

system.webServer處理部分包含

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

我加入了verb="*" path="*.castle"一部分,我得到錯誤,當他們失蹤。不確定它們的值是否正確。

任何人都知道問題在這裏?

+1

PerWebRequestLifestyleModule是一個模塊,而不是一個處理程序。從處理程序部分刪除它。 – 2009-09-30 15:09:34

+0

嘗試在模塊聲明中包含Version,Culture和PublicKeyToken。 – 2009-09-30 15:15:42

+0

謝謝,我刪除了模塊聲明。 Version,Culture和PublicKeyToken是沒有必要的。我還必須添加 作爲處理程序。 也必須創建目錄'C:\ TempImageFiles'才能使它工作。 – 2009-09-30 18:53:41

回答

6

可以通過在配置/ system.webServer /模塊代替配置/ System.Web程序/的HttpModules註冊HTTP模塊解決問題。

1

我花了一些時間來找到一個解決方案,但我不得不這樣是更新的dll被referneced在web.config ...

使用Castle.Core和溫莎2.5.1 ...

4

我的問題是,我的Bootstrap容器中Application_Start,模塊不會在ASP.NET點初始化,所以當您嘗試註冊/使用PerWebRequest生活方式它拋出異常,因爲它檢測到模塊未初始化。

我最終使用this libraryCastle Contrib它提供了HybridPerWebRequestTransient生活方式,如果現在還沒有初始化使用瞬態生活方式。

你只需要下載庫(如zip是好的)打開解決方案並編譯它,抓住生成的DLL並在你的項目中引用它。

如果您使用的Castle.Windsor版本超過3.0,您將不得不刪除當前引用並添加引用到您正在使用的版本(我正在使用3.1,並沒有任何問題)。

這是使用生活方式代碼:.LifeStyle.HybridPerWebRequestTransient()