我应该使用AddMvc或addmvcore为ASP.. NET Core MVC开发

本文关键字:NET ASP Core MVC 开发 addmvcore AddMvc 我应该 | 更新日期: 2023-09-27 18:13:30

我正在学习ASP。. NET Core MVC,问题的代码片段如下:

// CHAPTER 4 - ESSENTIAL C# FEATURES
namespace LanguageFeatures {
    public class Startup {
        public void ConfigureServices(IServiceCollection services) {
            services.AddMvc();
        }
        // etc.

因为这本书是关于ASP的。. NET Core MVC,而不是ASP。. NET MVC,我认为我必须使用AddMvcCore()而不是AddMvc(),如下所示:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvcCore(); // as opposed to:
    //services.AddMvc();
}

我在这里做的是正确的吗?

我应该使用AddMvc或addmvcore为ASP.. NET Core MVC开发

查看ASP上的MvcServiceCollectionExtensions.cs类。. NET Core GitHub repo:

public static IMvcBuilder AddMvc(this IServiceCollection services)
{
    if (services == null)
    {
        throw new ArgumentNullException(nameof(services));
    }
    var builder = services.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
    builder.AddCors();
    return new MvcBuilder(builder.Services, builder.PartManager);
}

AddMvcCore()AddMvc()都返回一个IMvcBuilder,可以用来进一步配置MVC服务。

AddMvcCore(),顾名思义,只添加MVC管道的核心组件,需要您自己添加任何其他中间件(项目所需)。

AddMvc()内部调用AddMvcCore(),并添加其他中间件,如Razor视图引擎、Razor页面、CORS等。

现在,我会按照你的教程建议,坚持使用AddMvc()


As of ASP。在asp.net Core 3.0中,有一些额外的方法可以细粒度地控制MVC管道的哪些部分对你的应用程序可用,例如:

  • services.AddControllers()
  • services.AddControllersWithViews()

有关它们的作用和何时使用它们的更多信息,请参阅本文和MSDN。