AddMvc 和 AddMvcCore 的区别

目录

640?wx_fmt=png

本文出自《从零开始学 ASP.NET CORE MVC》目录 
视频课程效果更佳:从零开始学 Asp.Net Core MVC 

ASP.NET Core 为什么有 AddMvc 和 AddMvcCore 他们是什么关系?

640?wx_fmt=png

在本视频中,我们将讨论 AddMvc()和 AddMvcCore()方法之间的区别。

要在 ASP.NET Core 应用程序中设置 MVC,我们在 Startup 类的 ConfigureServices()方法中调用 IServiceCollection 接口的 AddMvc()方法。

services.AddMvc();

除了 AddMvc()方法,我们在 IServiceCollection 接口上也有 AddMvcCore()方法。 因此,我们想到的一个显而易见的问题是,这两种方法之间的区别是什么。

AddMvc() v/s AddMvcCore()

640?wx_fmt=png

在我们讨论 AddMvc()和 AddMvcCore()方法之间的区别之前,让我们修改以下 HomeController 以返回 JSON 格式的数据,而不是简单的字符串。

目前,没有为 HomeController 类指定基类。 它现在还可以为我们从 Index()动作方法返回一个简单的字符串。

public class HomeController
{
public string Index()
{
return "Hello from MVC";
}
}

但是,如果我们想要从 Index()操作方法返回 HTML 视图或 JSON 数据,则我们的 HomeController 类必须继承框架提供的 Controller 类。 Controller 基类提供了返回不同结果的支持,如 JsonResult,ViewResult,PartialViewResult 等。 修改 HomeController 类以从 Controller 类派生并从 Index()方法返回 JsonResult,如下所示。

public class HomeController : Controller
{
public JsonResult Index()
{
return Json(new { id=1, name="pragim" });
}
}

请注意:Controller 类存在于 Microsoft.AspNetCore.Mvc 命名空间中。

此时,运行应用程序,我们应该按预期在浏览器中看到 JSON 数据。

现在,在 ConfigureServices()方法中调用 AddMvcCore()方法而不是 AddMvc()并运行应用程序。

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

我们收到以下错误

没有为“Microsoft.AspNetCore.Mvc.Formatters.Json.Internal.JsonResultExecutor”类型的服务注册

为了能够返回 JSON 数据,需要在依赖注入容器中注册 JsonFormatterServices。AddMvc()方法执行此操作,但不执行 AddMvcCore()方法。您可以通过查看 ASP.NET Core MVC Github 页面上的源代码来确认这一点。

https://github.com/aspnet/Mvc/blob/release/2.2/src/Microsoft.AspNetCore.Mvc/MvcServiceCollectionExtensions.cs

顾名思义,AddMvcCore()方法只添加核心 MVC 服务。另一方面,AddMvc()方法添加了所有必需的 MVC 服务。AddMvc()方法在内部调用 AddMvcCore()方法,以添加所有核心 MVC 服务。因此,如果我们调用 AddMvc()方法,则无需再次显式调用 AddMvcCore()方法。

我希望这可以澄清 AddMvc()和 AddMvcCore()方法之间的区别。

原文地址:https://www.52abp.com/wiki/mvc/V0.16/17.AddMvcVsAddMvcCore

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 
640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈容量规划

俗话说,”人无远虑,必有近忧”,容量规划就是”远虑”。所谓容量规划,是一个产品满足用户目标需求而决定生产能力的过程。当产品发展到一个较为稳定成熟的阶段,产品的整体处理能力的把控自然是不可或缺,尽管…

CF1063C Dwarves, Hats and Extrasensory Abilities

CF1063C Dwarves, Hats and Extrasensory Abilities 题意: 首先题目会给出 n ,表示要输入多少点。 然后你输出n 个点的坐标,每输出一个点会告诉你这个点的颜色是黑色或者白色。 最后你需要输出两个点的坐标代表一条直线,这条直线…

Blazor——Asp.net core的新前端框架

Blazor是微软在Asp.net core 3.0中推出的一个前端MVVM模型,它可以利用Razor页面引擎和C#作为脚本语言来构建WEB页面,如下代码简单演示了它的基本功能:和Angular JS和VUE的模型非常类似,Blazor 支持大多数应用所需的核心方案&#…

CF1149B Three Religions

CF1149B Three Religions 题意: 给定长度为 n 的母串和三个子串s1,s2,s3s_1,s_2,s_3s1​,s2​,s3​ 。初始时子串均为空。有 q 次询问。你需要支持两种操作:向某个子串末尾添加一个字母,或者删去某个子串末尾的字母。在每次操作后&#xff…

【译文】领域模型的五个特征

我在这篇博客文章中,我试图给领域模型下一个非常合适的定义,我发现我的这些定义都不太妥当,不过,我们还是可以先来看一下wiki百科对领域驱动模型下的定义:问题解决和软件工程中的领域模型可以被认为是感兴趣的领域&…

使用ASP.NET Core 实现Docker的HealthCheck指令

写在前面HealthCheck 不仅是对应用程序内运行情况、数据流通情况进行检查, 还包括应用程序对外部服务或依赖资源的健康检查。健康检查通常是以暴露应用程序的HTTP端点的形式 实施,可用于配置健康探测的的场景有 :容器或负载均衡器 探测应用状…

VS Code 中有哪些好用的 Azure 插件?

在之前的文章中,我们提到了 Amazon、Google、IBM、Red Hat、Salesforce、Pivotal 等大厂都在 VS Code 中有提供相应的开发工具:亚马逊上了 VS Code 的船,还有哪些大厂也上了船?微软必定更是把 VS Code 作为其最重要的开发者平台了…

邀请 | 关于微软容器服务,你需要知道的二三事

容器是近年来特别火的话题,那么,什么是容器?为什么我们需要容器服务?微软容器服务特点是什么?今天我们用一种特殊的方式为大家介绍这三大话题。什么是容器这个部分,我们用一个故事进行开场。很久以前&#…

UWP 推荐 | 限时免费的RSS阅读器《RSS 追踪》登录 Windows 10

前不久,本公号作者 Bravo Yeung 写了一篇不错的关于 RSS 的文章 .Net开发者必知的技术类RSS订阅指南。RSS 现在用的人很少了,而且就算是我,也不过是在一周前才开始正视 RSS 。只因为接触到了一个很好很强大的社区 RSS Hub ,当时看…

常见跨域解决方案以及Ocelot 跨域配置

常见跨域解决方案以及Ocelot 跨域配置Intro我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题。今天来介绍一下我们在Ocelot网关配置的跨域。什么是跨域跨域:浏览器对于javascript的同源策略的限制,例如a.cn下面的js不…

解读大内老A的《.NET Core框架本质》

老A说的一句话让我很受启发,想要深入了解框架,你要把精力聚焦在架构设计的层面来思考问题。而透彻了解底层原理,最好的笨办法就是根据原理对框架核心进行重建或者说再造。看起来没有捷径,也是最快的捷径。相信很多读者已经看过老A…

Mono和.NET Core 从比翼双飞到合体

.NET 开源之路就是 Mono和.NET Core 从比翼双飞到合体:2001年12月-2002年2月。一个新的平台诞生了。与惠普、英特尔和其他公司一起, 创建了 ECMA-335 标准, 该标准定义了支持多种编程语言的公共语言基础结构,C# 和 Visual Basic. Net。 F # 于2007年晚些…

Skywalking部署常见问题以及注意事项

Skywalking部署常见问题以及注意事项IntroSkyWalking 创建与2015年,提供分布式追踪功能。从5.x开始,项目进化为一个完成功能的Application Performance Management系统。他被用于追踪、监控和诊断分布式系统,特别是使用微服务架构&#xff0c…

GitHub推出包管理服务,npm与Nuget全支持

GitHub 今天推出了一项名为 GitHub Package Registry 的新产品,它提供了软件包管理服务,开发者通过它可发布公共或私有软件包。官方介绍,GitHub Package Registry 完全集成在 GitHub 中,因此和 repo 一样,用户可以使用…

发布dotNetCore程序到Kubernetes

上一篇《Mac中搭建Kubernetes》介绍了怎样在Mac中搭建单节点的Kubernetes,本文将编写一个dotNetCore的示例程序,并发布到Kubernetes中。环境基本步骤创建dotnetCore示例项目;本地搭建私有registry,或者使用DockerHub,本…

[Cake] 2. dotnet 全局工具 cake

在上篇博客[Cake] 1. CI中的Cake中介绍了如何在CI中利用Cake来保持与CI/CD环境的解耦。当时dotnet 2.1还未正式发布,dotnet 还没有工具的支持,使得安装cake非常麻烦。不过随着 dotnet tool 的加入,这一问题得到了很好的解决。目前安装cake&am…

官博翻译 | .NET Core 即 .NET 的未来

点击上方蓝字关注“汪宇杰博客”文 / Scott Hunter译 / 汪宇杰我们在2014年11月推出了.NET Core 1.0。.NET Core 的目标是借鉴我们过去12年构建、发布和服务.NET Framework的经验去构建更好的产品。这些改进如:并行安装(您可以安装新版本,而…

微软发布ML.NET 1.0,可一键添加机器学习模型

今天,我们很高兴宣布发布 ML.NET 1.0。ML.NET 是一个免费的、跨平台的开源机器学习框架,旨在将机器学习(ML)的强大功能引入.NET 应用程序。ML.NET GitHub:https://github.com/dotnet/machinelearning入门 http://dot.…

目前下载VS2017你可能会遇到这个坑

可能现在大伙都已经开始使用VS2019进行开发了。VS2019的下载使用也都很简单。由于工作需要,今天要在笔记本上安装VS2017,结果发现,VS2017的下载变得不是那么容易了,官方的下载方式也隐藏的很深,来来回回折腾了好一会才下载下来&am…

代码整洁之道(Clean Code)- 读书笔记

Sorry, 许久未更新文章了,主要因为刚刚换了一家新公司,忙于组建团队(建设、招聘、流程、框架等)与熟悉公司业务,还有领导给的其他工作等等,实在是没有时间更新了。最近在和团队分享Bob大叔的《Clean Code》…