vNext Application_Start() equivalent

本文关键字:equivalent Start Application vNext | 更新日期: 2023-09-27 18:32:01

我正在尝试在启动期间进行一次调用。

var assemblies = BuildManager.GetReferencedAssemblies();

这是从MVC 4项目带来的。

从 Startup.ConfigureServices 或 Startup.Configure 调用它会引发异常;

System.InvalidOperationException 在应用程序的预启动初始化阶段不能调用此方法。

  1. 在 vNext 启动管道中的哪个位置,我可以开始进行与此类似的调用,这些调用与预启动初始化不冲突。

  2. 另一个问题,我是否应该在启动期间显式调用 BuildManager.GetReferencedAssemblies()。 调用的原因是查找此应用的所有程序集、查找应用中的所有区域、查找应用中的所有控制器,并对所有这些控制器施加筛选器。 过去,我在每个控制器上都强加了身份验证过滤器,并且不依赖开发人员在操作上放置 [Authorize] 属性。 它阻止了突然出现的安全漏洞。开发人员必须通过配置选择退出对他们执行此操作,这引入了记录在案的安全审计跟踪。

我已经研究了中间件的东西,但我喜欢预先完成所有的连接,然后让应用程序框架随心所欲地工作。

其他人建议使用 OWIN,但如果可能的话,我想遵循 vNext 约定,而不是进行任何混合和匹配。

另一个建议是将Global.asax放回去,等等。

感谢您提供与vNext方式一致的任何方向。

vNext Application_Start() equivalent

您可以侦听 ApplicationStarted 事件。试试这个

public void Configure(IApplicationBuilder app, IApplicationLifetime lifetime) {
    lifetime.ApplicationStarted.Register(() => {
        // Your code goes here
    });
}