之前调用哪种方法SignalR Configuration或ASP.NET Application_Start?

时间:2015-05-30 08:36:58

标签: asp.net signalr servicestack

我使用ServiceStack框架的SignalR 2.x和ASP.NET。它使入口点,每个管道一个:

  1. Startup.Configuration(IAppBuilder app) - 用于SignalR启动配置 和
  2. Global.asax.cs中的Global.Application_Start() - 用于初始化标准ASP.NET管道。
  3. 我想将在Application_Start()中创建的一些对象传递给Configuration()(例如IOC实例)。为此,我想确保在 Application_Start()之后将Configuration()称为

    我发现了stackoverflow question。困扰我的是slightly later定义。这是否意味着执行是重叠的?是否承诺Configuration()中的代码在 Application_Start()之后将被称为

    有人知道它是如何工作的,这是什么延迟?有没有人有编码这些方法的经验?

    谢谢

1 个答案:

答案 0 :(得分:1)

Iv决定通过实验确认我以前的(和不正确的)声明,确实Application_Start()方法在任何Owin启动类之前被称为,这意味着在SignalR配置之前(假设使用Owin推荐SignalR配置)当然是启动。)

Owin(确切地说Microsoft.Owin.Host.SystemWeb - 它是IIS的Owin主机适配器)确实使用System.Web.PreApplicationStartMethodAttribute挂钩到ASP.NET管道但是only to register its own OwinHttpModule (是的,这个注册发生在Application_Start()之前)。但是在OwinHttpModule.Init()期间发现并运行Owin启动类,这发生在Application_Start()之后。 Slightly later意味着 - 在执行HttpApplication.RegisterEventSubscriptionsWithIIS私有方法期间调用这两个方法。没有重叠肯定......

旁注:Imho没有理由在应用程序的两个不同位置启动\配置,因为OWIN是ASP.NET世界中的下一个重要的东西(请参阅vNext或SignalR)并提供更多比Application_Start()更有利(例如在web.config中切换启动配置),我绝对计划将所有Application_Start()代码迁移到OWIN启动。 - >没理由担心第1次发生的事情;)

这也是我对你的建议!