asp.net – 在SignalR 2.0中使用现有的IoC容器
发布时间:2020-12-16 07:12:54 所属栏目:asp.Net 来源:网络整理
导读:如何在SignalR 2.0中使用现有的IoC? 从教程中,我似乎需要设置一个通过属性从OWIN调用的类: using Microsoft.Owin;using Owin;[assembly: OwinStartup(typeof(SignalRChat.Startup))]namespace SignalRChat{ public class Startup { public void Configurat
如何在SignalR 2.0中使用现有的IoC?
从教程中,我似乎需要设置一个通过属性从OWIN调用的类: using Microsoft.Owin; using Owin; [assembly: OwinStartup(typeof(SignalRChat.Startup))] namespace SignalRChat { public class Startup { public void Configuration(IAppBuilder app /*HOW AM I GONNA GET UNITY CONTAINER HERE?*/) { var hubConfig = new HubConfiguration() { EnableJSONP = true,EnableDetailedErrors = true,EnableJavaScriptProxies = true,Resolver = new SignalRUnityDependencyResolver(container) }; // Any connection or hub wire up and configuration should go here app.MapSignalR(hubConfig); } } } 这里的问题是我已经有了一个容器,它是引导绑定的,并且容器中有单个实例需要与在同一主机下共享的MVC应用程序共享. 然而,这里的问题是,与以前不同,它看起来不像我可以从我自己的代码调用MapSignalR方法.相反,我需要依靠OWIN来为我做这件事.但是OWIN不知道我已经设置的容器. 解决这个问题的最佳方法是什么?我有一些非常粗略的想法,如何使用静态变量来解决其中的一些解决方案 – 但我讨厌它的想法.代码很脆弱,操作顺序很容易引入一个微妙的bug. 有没有办法在不让OWIN调用上述方法的情况下获取IAppBuilder实例?这样我可以在SignalR初始化时更好地控制,并且我可以将自己的IoC传递到配置中. 解决方法
在我的例子中,我创建了一个自定义集线器激活器,它使用我的app和signalR之间的共享容器(通过构造函数注入),这样你就可以为整个应用程序提供单个复合根.
尝试以下方法: public class CustomHubActivator : IHubActivator { private readonly Container _container; public MseHubActivator(Container container) { _container = container; } public IHub Create(HubDescriptor descriptor) { return _container.GetInstance(descriptor.HubType) as IHub; } } 在引导应用程序时注册自定义集线器激活器(可能是global.asax) GlobalHost.DependencyResolver.Register(typeof (IHubActivator),() => new CustomHubActivator(Container)); 这是一个更简单的解决方案,而不是再次配置signalR dependencyResolver (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 为什么IIS线程这么珍贵与常规CLR线程相比?
- regex – RegularExpressionAttribute – 如何使它不区分大
- asp.net-mvc – T4MVC基本控制器没有默认构造函数
- asp.net – 检查.NET中两个双精度相等的问题 – 这个方法有
- 如何更新asp.net网站(刚更改的文件)
- asp.net – 如何阅读maxAllowedContentLength
- asp.net-mvc – ASP.NET MVC – 正确使用View Model和Comma
- asp.net-mvc – 无法加载文件或程序集Oracle.DataAccess
- asp.net – app_offline文件中的图片
- 在asp.net mvc 3中实现FilterAttribute,IActionFilter和继承
推荐文章
站长推荐
- asp.net-mvc – 在ASP.NET MVC中创建ETag过滤器
- asp.net-mvc-3 – ASP.NET MVC – 不同角色的菜单
- asp.net – CheckBoxList滚动条
- asp.net-mvc – 如何使用html帮助器在asp.net mv
- asp.net-core – 如何从控制器中解析ASP NET 5中
- 以编程方式访问ASP.NET 2.0中继器中的数据
- 仅为匿名配置ASP.NET缓存?
- asp.net – SQL Server查询从ADO.NET运行速度比S
- asp.net-mvc – 是否可以为模型中的字段指定标签
- asp.net-mvc-4 – ASP.NET MVC Web Api无法将Que
热点阅读