- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始使用 SignalR,并为 SignalR 创建了一个自定义解析器,因此我可以使用 CaSTLe Windsor 通过集线器构造函数注入(inject)依赖项。
我有点假设我只需要注册依赖项,但我发现在我的应用程序运行之前还需要注册集线器本身。这是预期的吗?如果是这样,我应该为集线器使用多长的生命周期?
最佳答案
默认情况下,SignalR 不会向依赖解析器注册每个集线器。相反,它使用 IAssemblyLocator
查找可能包含 SignalR 集线器的可用程序集。然后 IHubDescriptorProvider
搜索集线器的所有可用程序集并创建 HubDescriptor
s。
最后,IHubActivator
需要 HubDescriptor
并返回一个新实例化的 SignalR 集线器(使用 Activator.CreateInstance
),除非集线器类型与 HubDescriptor
关联已向依赖解析器注册。在后一种情况下,集线器从 IHubActivator
返回。将直接从依赖解析器中获取。
通常 SignalR 集线器是短暂的,这意味着它们会为每个集线器方法调用创建和销毁。这意味着如果您使用 SignalR 的依赖解析器注册您的 Hub,您应该确保每次 SignalR 解析 Hub 类型时都返回一个新的 Hub 实例。
我强烈建议不要注册单例集线器,原因如下:
Hub.Context
可以作为另一个方法调用的设置的一部分被覆盖。这可能会导致非常微妙的错误。例如,对于单例集线器,以下代码可能会将调用者以外的连接添加到组(这显然可能是一个很大的安全问题):[Authorize(Roles="Admin")]
public async Task JoinAdminGroup()
{
await Groups.Add(Context.ConnectionId, "admin");
}
Hub.Dispose
每次激活后都会调用。如果你一直返回同一个 Hub,它的 Dispose 方法将被重复调用。除非您在集线器上实现 Dispose,否则这可能不会影响您,因为默认的 Dispose 实现当前无操作。 关于inversion-of-control - SignalR with IoC (CaSTLe Windsor) - 集线器的生命周期是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21111436/
我正在实现 hangFire,它是我项目中的作业调度库。 我面临着与此 link 中相同的问题 然而,将 LifestylePerWebRequest() 替换为 HybridPerWebReques
在我的项目中,我需要同时使用 CaSTLe.Windsor 和 Moq dll。 Windsor 要求 CaSTLe.Core 也在项目中被引用。 当我尝试使用 CaSTLe.Core 中的方法时,问
我已将我的解决方案从城堡版本 1.0 更新到版本 3.0,现在我收到此错误: Type Castle.Facilities.FactorySupport.FactorySupportFacility
我的应用程序使用“SignalR”客户端/服务器通信框架。如果您不熟悉它,服务器端应用程序通常包含一个或多个“集线器”类(类似于 asmx 网络服务),每个类都提供可由客户端调用的方法。在启动期间,客
假设我有这样的组件 public class MyComponent { public MyComponent(string name) { } } 我基本上想让提供的构造函数
我想知道是否有一些最佳实践来实现我需要的功能。 我有一个 Web 应用程序,它在启动期间通过反射扫描某些程序集(插件)并针对公共(public)内核注册它们的依赖项。 外部库可能需要相同的依赖项。 例
我想知道是否有一些最佳实践来实现我需要的功能。 我有一个 Web 应用程序,它在启动期间通过反射扫描某些程序集(插件)并针对公共(public)内核注册它们的依赖项。 外部库可能需要相同的依赖项。 例
是否有关于如何使用 CaSTLe Windsor 的自动事务管理的任何简单示例? documentation似乎缺少一些信息。我看到有用于 nHibernate、ActiveRecord 等的工具……
这是一次回答,但从那时起下载站点已经改变(显然)。我根本找不到 CaSTLe.MicroKernel。 2.51 不能再下载,它不在 2.52 中。或 2.53。 最佳答案 没有Castle.Micr
我正在将我们的项目从 .Net 2 升级到 .Net4.5,同时我将尽可能多的引用推送到 NuGet 并确保版本是最新的。 我在运行其中一项测试时遇到问题 测试类: public cl
当我开始使用 Windsor 时,我认为 DI 会很简单。现在它让我越来越困惑。 在我看来,存储库是一个具有单例生命周期的类。我应该有一个 FooRepository 实例来在应用程序的生命周期内将
我有一个接口(interface) ISession,其实例由不同的 session 工厂生成,具体取决于类所属的命名空间。 我的组件注册示例: IWindsorContainer container
我正在关注 example by José F. Romaniello使用 NHibernate 进行 session 管理。这是一篇非常好的文章,但是我在 NHibernate、Windsor 和
我有一个看似简单的用例。有一个 ICsvReader 组件。让我们在这里简单地将它命名为 Reader。我们加载了一组已知的 CSV 文件,其中一些有标题,有些没有。目前有多个阅读器:Reader_S
试图找出这件事的真正原因,但并没有太多乐趣! Type is not resolved for member 'Castle.MicroKernel.Lifestyle.Scoped.CallCont
这是我在 Global.asax 中的代码 WindsorContainer container = new WindsorContainer(); container.Register(Compo
我正在尝试了解如何使用 CaSTLe ActiveRecord 执行自定义查询。 我能够运行返回我的实体的简单查询,但我真正需要的是如下所示的查询(带有自定义字段集): 选择 count(1) 作为
在使用 ArrayResolver 时,如果我注册了一个接口(interface)的多个实现和一个依赖于所述接口(interface)数组的类,我希望数组解析器注入(inject)所有可以成功解析的接
我为服务注册了两个组件: container.Register( Component.For().Named("FirstChoice").ImplementedBy... Compo
有没有人有一些使用城堡 Windsor InstallerFactory 来订购安装程序的示例代码? 似乎无法在文档或其他地方找到它。 干杯 最佳答案 您只能使用 InstallerFactory与
我是一名优秀的程序员,十分优秀!