【问题标题】:Castle windsor lifestyle issue温莎城堡生活方式问题
【发布时间】:2015-04-28 08:15:09
【问题描述】:

我正在实现hangFire,它是我项目中的一个作业调度库。

我面临的问题与link 中所面临的问题相同

但是,将 LifestylePerWebRequest() 替换为 HybridPerWebRequestTransient() 后,我仍然收到相同的错误消息:

HttpContext.Current 为空。 PerWebRequestLifestyle 只能在 ASP.Net 中使用

这是我的依赖安装程序的几行代码:

container.Register(Component.For<IApiHra>()
                            .ImplementedBy(typeof(ApiHra))
                            .LifeStyle.HybridPerWebRequestTransient()
                            .IsFallback());

container.Register(Component.For<IApiHraComment>()
                            .ImplementedBy(typeof(ApiHraComment))
                            .LifestylePerWebRequest()
                            .IsFallback());

这是温莎控制器工厂的控制器安装程序

public class ControllersInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Classes.FromThisAssembly()
                                  .BasedOn<IController>()
                                  .LifestyleTransient());
    }
}

如果需要任何其他信息,请告诉我。

【问题讨论】:

  • 在我看来,IApiHraComment 仍然有 LifestylePerWebRequest。因此,如果这个组件是从没有 Http.Context 的容器中解析出来的,我希望它会抛出。您能在错误消息中找到导致异常的组件吗?
  • 实际上我只使用IApiHra。它也有其他依赖项,我尝试将它们全部混合但没有用。IApiHra 导致异常
  • @SJMan 你有没有想过这个问题?
  • 有什么解决办法吗?我正在努力解决同样的问题。

标签: castle-windsor ioc-container castle-windsor-3


【解决方案1】:

请参阅 Krzysztof Kozmic 的回答 here。您的 IApiHra 组件可能具有 PerWebRequestLifestyle 依赖项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多