我正在尝试使用StructureMap将依赖注入到SignalR中心。
互联网上有很多消息来源说这应该按照这个答案来完成:How do you Resolve signalR v2.0 with StructureMap v2.6。我尝试了它,并让它工作 - 至少在第一次页面加载后的第一个动作。
当我尝试离开包含SignalR-JS-Code(或重新加载页面)的HTML页面时,或者当我第二次使用我的集线器中定义的其中一个函数时,我得到了这个StructureMapException:{{1在You cannot use the HttpContextLifecycle outside of a web request. Try the HybridLifecycle instead.
public IHub Create(HubDescriptor descriptor)
函数中
我已经通过在引导期间修改扫描来尝试这个:
HubActivator
但这没有帮助。
我需要更改(在SignalR或StructureMap中)来修复此异常?
答案 0 :(得分:3)
事实证明我必须更改我的NHibernate注册表格式
[...]
if (HttpContext.Current != null)
{
For<ISession>()
.HttpContextScoped()
.Use(x => x.GetInstance<ISessionFactory>().OpenSession());
}
[...]
到
[...]
if (HttpContext.Current != null)
{
For<ISession>()
.HybridHttpOrThreadLocalScoped()
.Use(x => x.GetInstance<ISessionFactory>().OpenSession());
}
[...]
不同的背景似乎可以避免会话迷失。