首页 文章

IIS7 和 Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule 注册问题

提问于
浏览
5

更新:

在 Windsor 2.5 中,程序集名称是Castle.Windsor而不是Castle.MicroKernel


我正在尝试将一个 ASP.NET MVC 应用程序部署到 IIS7,我收到此错误:

看起来您忘记在 web.config 的部分注册 http 模块 Castle.MicroKernel.Lifestyle.PerWebRequestLifestyleModule 添加''

我的 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"部分,因为当他们失踪时我遇到了错误。不确定他们的价值是否正确。

谁知道这里的问题是什么?

3 回答

  • 6

    您可以通过在configuration/system.webServer/modules而不是configuration/system.web/httpModules中注册 HTTP 模块来解决问题。

  • 4

    我的问题是我在Application_Start中引导容器,模块在 ASP.NET 中没有初始化,所以当你尝试 register/use PerWebRequest Lifestyle 它会抛出异常,因为它检测到模块没有被初始化。

    我最终使用了来自城堡贡献这个图书馆,这提供了HybridPerWebRequestTransient Lifestyle,如果现在没有初始化,则使用 Transient Lifestyle。

    你只需要下载库(因为 zip 是可以的)打开解决方案并编译它,获取生成的 DLL 并在项目中引用它。

    如果您使用 Castle.Windsor 版本而不是 3.0,则必须删除对它的当前引用并添加对您正在使用的版本的引用(我使用 3.1 并且没有任何问题)。

    这是使用生活方式的代码:.LifeStyle.HybridPerWebRequestTransient()

  • 1

    花了我一些时间为此找到一个解决方案,但我只需要更新 web.config...中引用的 dll。

    使用 Castle.Core 和 Windsor 2.5.1...

相关问题