小编典典

如果我使用 OWIN Startup.cs 类并将所有配置移到那里,我是否需要 Global.asax.cs 文件?

all

例如,在一个全新的 ASP.NET MVC 5 应用程序中,使用 MVC with Individual Accounts
模板制作,如果我删除Global.asax.cs该类并将其配置代码移动到Startup.cs
Configuration()如下方法,那么缺点是什么?

public partial class Startup
{
     public void Configuration(IAppBuilder app)
     {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        ConfigureAuth(app);
    }
}

对我来说好处是,当将 ASP.NET 4 应用程序升级到 ASP.NET 5 并使用现在必须在 Startup.cs
类中配置的部分时,我没有在两个看起来相关的不同类中进行依赖注入和其他配置启动和配置。


阅读 73

收藏
2022-06-24

共1个答案

小编典典

Startup.Configuration 的调用比 Application_Start 稍晚一些,但我认为在大多数情况下差异并不重要。

我相信我们在 Global.asax 中保留其他代码的主要原因是:

  1. 与以前版本的 MVC 保持一致。(这是目前每个人都希望找到此代码的地方。)
  2. 能够添加其他事件处理程序。在 Global.asax 中,您可以处理其他方法,例如 Session_Start 和 Application_Error。
  3. 在各种身份验证场景中的正确性。只有在 bin 目录中有 Microsoft.Owin.Host.SystemWeb.dll 时才会调用 Startup.Configuration 方法。如果您删除此 DLL,它将默默地停止调用 Startup.Configuration,这可能很难理解。

我认为第三个原因是我们默认没有采用这种方法的最重要的原因,因为某些场景不包括拥有这个
DLL,并且能够更改身份验证方法而不会使无关代码的位置无效(比如路由注册)被放置。

但是,如果这些原因都不适用于您的场景,我认为您可以使用这种方法。

2022-06-24