一尘不染

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

c#

举例来说,在一个由带有个人帐户的MVC模板制作的全新ASP.NET MVC
5应用程序中,如果我删除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类中配置的组件时,我没有在似乎相关的两个不同类中进行依赖项注入和其他配置。进行启动和配置。


阅读 418

收藏
2020-05-19

共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,并且能够更改身份验证方法而不会使无关代码的位置无效(例如路线注册)。

但是,如果这些原因都不适合您的情况,那么我认为使用此方法会很好。

2020-05-19