【发布时间】:2014-01-17 04:37:31
【问题描述】:
我正在尝试使用 StructureMap 将依赖项注入到 SignalR 集线器。
互联网上的许多消息来源说这应该按照以下答案进行:How do you Resolve signalR v2.0 with StructureMap v2.6。我试过了,让它工作了——至少在第一个页面加载后的第一个操作中。
当我尝试离开包含 SignalR-JS-Code 的 HTML 页面(或重新加载页面)时,或者当我第二次使用集线器中定义的功能之一时,我得到了这个 StructureMapException:You cannot use the HttpContextLifecycle outside of a web request. Try the HybridLifecycle instead.在我的HubActivator 的public IHub Create(HubDescriptor descriptor) 函数中
我已经通过在引导期间修改我的扫描来尝试过:
container.Configure(x =>
{
x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.AssembliesFromApplicationBaseDirectory(GetFilteredAssemblies);
scan.WithDefaultConventions().OnAddedPluginTypes(t => t.LifecycleIs(InstanceScope.Hybrid));
scan.LookForRegistries();
scan.AddAllTypesOf<MyProject.Data.Common.IEntity>();
scan.AddAllTypesOf<IMappedEntity>();
scan.AddAllTypesOf<IDatabaseInitializer>();
scan.AddAllTypesOf<IBootstrapMember>();
scan.AddAllTypesOf<IMembership>();
});
});
但这并没有帮助。
我必须更改什么(在 SignalR 或 StructureMap 中)才能修复此异常?
【问题讨论】:
标签: dependency-injection inversion-of-control signalr structuremap lifecycle