.net – Autofac SignalR
发布时间:2020-12-16 06:22:32 所属栏目:asp.Net 来源:网络整理
导读:我对autofac和singalR库都是新手,所以请对我这么简单!我在bootstrapper中有以下代码,它在没有signalR的情况下自行运行. var builder = new ContainerBuilder();builder.RegisterControllers(Assembly.GetExecutingAssembly());builder.RegisterAssemblyType
我对autofac和singalR库都是新手,所以请对我这么简单!我在bootstrapper中有以下代码,它在没有signalR的情况下自行运行.
var builder = new ContainerBuilder(); builder.RegisterControllers(Assembly.GetExecutingAssembly()); builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).AsImplementedInterfaces(); builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>().InstancePerHttpRequest(); builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerHttpRequest(); builder.RegisterAssemblyTypes(typeof(adminRepository).Assembly).Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces().InstancePerHttpRequest(); builder.RegisterAssemblyTypes(typeof(adminService).Assembly).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces().InstancePerHttpRequest(); builder.RegisterFilterProvider(); IContainer container = builder.Build(); DependencyResolver.SetResolver(new Autofac.Integration.Mvc.AutofacDependencyResolver(container)); 上面的代码工作正常,但在使用下面的代码注册我的Hub之后,它只是不起作用. builder.RegisterType<Chat>().InstancePerLifetimeScope(); builder.RegisterFilterProvider(); IContainer container = builder.Build(); DependencyResolver.SetResolver(new Autofac.Integration.Mvc.AutofacDependencyResolver(container)); SignalR.IDependencyResolver resolver = new SignalR.Autofac.AutofacDependencyResolver(container); GlobalHost.DependencyResolver = resolver; RouteTable.Routes.MapHubs(resolver); 我正在使用SignalR依赖解析器绑定到Autofac(https://github.com/pszmyd/SignalR.Autofac). 我有一个像这样的简单集线器, public class Chat : Hub { private readonly IadminService adminService; public Chat(IadminService adminService) { this.adminService = adminService; } public void Send(string message) { Clients.addMessage(message); } } 这是我尝试将DI用于集线器时出现的错误. “从请求实例的范围中看不到带有匹配’httpRequest’的标记的范围.” 无论我做什么,我似乎无法让它工作,如果有人能告诉我上面的代码有什么问题,我将不胜感激. 非常感谢 解决方法
对于IIS中托管的ASP.NET应用程序,将其添加到Application_Start:
var container = AutofacConfig.BuildContainer(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); var signalRDependencyResolver = new SignalRAutofacDependencyResolver(container); // old SignalR 1.0 way - routes.MapHubs(signalRDependencyResolver); RouteTable.Routes.MapHubs(new HubConfiguration { Resolver = signalRDependencyResolver }); 您可以找到SignalRAutofacDependencyResolver here. 注入ISecurity服务的示例中心: public class ExampleHub : Hub { private static int _count = 0; private readonly ISecurity _security; public ExampleHub(ISecurity security) { _security = security; } public void GetCount() { _count++; Clients.All.SetCount(_count); } } 这也适用于SignalR self host release.只需使用这样的启动类: // These are static variables in Program.cs - Probably a better way to do this _container = AutofacConfig.BuildContainer(); _webServer = WebApp.Start<WebServerStartup>("http://localhost:8080"); public class WebServerStartup { private readonly SignalRAutofacDependencyResolver _signalRDependencyResolver; public WebServerStartup() { _signalRDependencyResolver = new SignalRAutofacDependencyResolver(_container); } public void Configuration(IAppBuilder app) { app.MapSignalR(new HubConfiguration { Resolver = _signalRDependencyResolver }); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – MVC3 AllowHtml属性的问题
- asp.net-mvc – ASP.NET MVC3 – 3层设计 – 事务控制和业务
- Asp.net使用缓存 (二)
- asp.net – 为什么这违反了类型约束?
- ASP.net WebAPI跨域调用问题的解决方法
- asp.net-mvc – 我可以在MVC3中共享创建和编辑的相同视图
- asp.net-mvc-4 – 如何使用ASP.NET MVC在Kendo UI Grid中实
- asp.net-mvc – MVC Tag助手无法正常工作
- asp.net – 如何通过LINQ获得第一级的孩子
- asp.net – asp mvc“一个有潜在危险的Request.Form ……”
推荐文章
站长推荐
- asp.net-mvc – 使用RowAction更改Kendo MVC网格
- asp.net-mvc-3 – 希望通过_layout将@renderbody
- asp.net – 如何获取控制器和操作名称在OnAction
- asp.net-mvc – 我如何在ASP.NET MVC中“多播缓存
- asp.net – 如何在会话超时或结束时注销用户
- asp.net – 如何直接在aspx布局页面中嵌入ShareP
- MS Chart与ASP.NET图表类型“列”不显示轴x标签,
- ASP.NET GridView利用PagerTemplate自定义分页
- asp.net – 如何禁用通过IIS提供的单页面应用程序
- 在ASP.Net Web应用程序中使用Rails应用程序中的用
热点阅读