ASP.NET CoreAddMvc和AddMvcCore的区别

Posted braink-1400

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET CoreAddMvc和AddMvcCore的区别相关的知识,希望对你有一定的参考价值。

AddMvcCore() method only adds the core MVC services.

AddMvc() method adds all the required MVC services.

AddMvc() method calls AddMvcCore() method internally.

  

  AddMvcCore()更加简洁,只添加了MVC核心服务。

  而AddMvc()添加了MVC所需要的所有组件。

  AddMvc()内部调用了AddMvcCore(),这也就使得AddMvcCore()更加重要。

  ASP.Net是开源项目,>github地址

  贴出AddMvc源码会更加清楚。

  

public static IMvcBuilder AddMvc(this IServiceCollection services)
        
            if (services == null)
            
                throw new ArgumentNullException(nameof(services));
            

            var builder = services.AddMvcCore(); // 从这里开始,都是以AddMvcCore()为基础进行添加的各种服务。

            builder.AddApiExplorer();
            builder.AddAuthorization();

            AddDefaultFrameworkParts(builder.PartManager);

            // Order added affects options setup order

            // Default framework order
            builder.AddFormatterMappings();
            builder.AddViews();
            builder.AddRazorViewEngine();
            builder.AddRazorPages();
            builder.AddCacheTagHelper();

            // +1 order
            builder.AddDataAnnotations(); // +1 order

            // +10 order
            builder.AddJsonFormatters();

            builder.AddCors();

            return new MvcBuilder(builder.Services, builder.PartManager);
        

 

  AddMvcCore源码:

  

 1 public static IMvcCoreBuilder AddMvcCore(this IServiceCollection services)
 2         
 3             if (services == null)
 4             
 5                 throw new ArgumentNullException(nameof(services));
 6             
 7 
 8             var partManager = GetApplicationPartManager(services);
 9             services.TryAddSingleton(partManager);
10 
11             ConfigureDefaultFeatureProviders(partManager);
12             ConfigureDefaultServices(services);
13             AddMvcCoreServices(services);
14 
15             var builder = new MvcCoreBuilder(services, partManager);
16 
17             return builder;
18         

 

转自油管>ASP NET Core AddMvc vs AddMvcCore

以上是关于ASP.NET CoreAddMvc和AddMvcCore的区别的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net core 3 中设置 json 序列化程序设置?

零基础ASP.NET Core MVC插件式开发

解决asp.net core 日期格式 datetime Json返回 带T的问题

Asp.net核心默认路由

[七] ASP.NET Core MVC 的设计模式

基础教程:ASP.NET Core 2.0 MVC筛选器