我使用ServiceStack框架的SignalR 2.x和ASP.NET。它使入口点,每个管道一个:
我想将在Application_Start()中创建的一些对象传递给Configuration()(例如IOC实例)。为此,我想确保在 Application_Start()之后将Configuration()称为。
我发现了stackoverflow question。困扰我的是slightly later
定义。这是否意味着执行是重叠的?是否承诺Configuration()中的代码在 Application_Start()之后将被称为?
有人知道它是如何工作的,这是什么延迟?有没有人有编码这些方法的经验?
谢谢
答案 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次发生的事情;)
这也是我对你的建议!