2009-09-30 133 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()