首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我应该使用AddMvc还是AddMvcCore进行ASP.NET核心MVC开发?

我应该使用AddMvc还是AddMvcCore进行ASP.NET核心MVC开发?
EN

Stack Overflow用户
提问于 2016-10-18 07:29:45
回答 1查看 18.8K关注 0票数 70

我正在从一本书中学习ASP.NET核心MVC,正在讨论的代码片段如下:

// CHAPTER 4 - ESSENTIAL C# FEATURES
namespace LanguageFeatures {

    public class Startup {

        public void ConfigureServices(IServiceCollection services) {
            services.AddMvc();
        }

        // etc.

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-18 07:47:02

看看ASP.NET Core GitHub repo上的MvcServiceCollectionExtensions.cs

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);
}

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

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

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

现在,我将遵循您的教程的建议,并坚持使用AddMvc()

从MVCCore3.0开始,有一些额外的方法可以细粒度地控制您的应用程序可以使用ASP.NET管道的哪些部分,例如:

有关它们做什么以及何时使用它们的更多信息,请参阅this article和MSDN。

票数 89
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40097229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档