更新
在Windsor 2.5中,程序集名称为Castle.Windsor
而非Castle.MicroKernel
我正在尝试将ASP.NET MVC应用程序部署到IIS7,我收到此错误:
您好忘记注册了http模块 Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule将''添加到您的部分 的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"
部分,因为我在丢失时遇到错误。不确定他们的价值是否正确。
任何人都知道这里的问题是什么?
答案 0 :(得分:6)
您可以通过在 configuration / system.webServer / modules 中注册HTTP模块而不是 configuration / system.web / httpModules 来解决问题。
答案 1 :(得分:4)
我的问题是我在Application_Start
引导容器,在ASP.NET中的那个时候模块没有初始化,所以当你尝试注册/使用PerWebRequest
生活方式它会抛出异常,因为它检测到模块未初始化。
我最终使用this library中的Castle Contrib来提供HybridPerWebRequestTransient
生活方式,如果目前尚未初始化,则会使用瞬态生活方式。
你只需要下载库(因为zip是可以的)打开解决方案并编译它,获取生成的DLL并在你的项目中引用它。
如果您使用的Castle.Windsor版本超过3.0,您将不得不删除当前对它的引用并添加对您正在使用的版本的引用(我使用3.1并且没有任何问题)。
这是使用生活方式的代码:.LifeStyle.HybridPerWebRequestTransient()
答案 2 :(得分:1)
我花了一些时间为此找到解决方案,但我所需要的只是更新web.config中引用的dll ......
使用Castle.Core和Windsor 2.5.1 ......