services.AddControllers();有啥用啊,我不添加他 也能打开啊?
来源:2-4 【应用】添加第一个API

慕虎7937911
2020-07-24
1回答
-
阿莱克斯刘
2020-07-25
.net core项目的启动入口是program.cs,而在项目启动的时候需要加载一些支撑后端api运行的服务,这些服务就是在的在startup类的configServices函数中注册加载的(如果没有加载这些服务,那么.net Core程序就是一个简单的啥也干不了的命令行程序)。
而 “ services.AddControllers(); ”是干嘛用的呢?因为我们的项目是个api项目,需要使用的很多基础的功能,比如路由、请求处理等等。而services.AddControllers()就是用来处理这些最底层工作的。
实际上,绝大部分的ASP.NET项目的运行都是基于mvc框架的,而mvc框架实际上是包含model-view-controller三个部分的。所以,对于我们课程的.net core项目来说,你也可以把services.AddControllers换成下面任意一句话。
services.AddMvc() //加载整个mvc框架所有功能 services.AddMvcCore() //加载mvc框架的核心功能,轻量级 services.AddControllersWithViews() //仅加载controller控制器和view视图 services.AddControllers()//仅加载controller控制器
从功能上来说,AddMvc() > AddMvcCore() > AddControllersWithViews() > AddControllers()。
如果你在使用visual studio创建项目的时候仔细观察,你会发现vs中除了提供空模版、和api模版,还会提供一个mvc模版。而这个mvc模版加载的服务就是AddMvc(),因为这个模版将会使用mvc全部的功能,视图view的部分也会使用一个叫做cshtml的文件(html的变种,可以在html中写c#代码,类似java的jsp)。
关于ASP.NET Core MVC的只是你可以快速浏览一下慕课网的免费课程《打造你的第一个ASP.NET Core MVC网站应用》(大概4小时的内容,https://www.imooc.com/learn/1188 ),这门课程会从MVC的角度来介绍ASP.NET Core,如果能学习一下,应该对理解本门课程有很大的提升。
不过,现在越来越提倡前后端分离,这就是我们的课程所设立的初衷,实现的是纯粹前后端分离的api。既然是前后端分离,那么我们就不需要强行耦合html (cshtml) ,所以我们也没必要使用addmvc加载整套mvc框架,这就是为什么课程选择services.AddControllers()来作为基础服务。
不管是免费课还是实战课,都欢迎加入课程的讨论群,我们可以随时探讨学习中遇到的问题。
QQ技术讨论群
QQ群:294700320
若遇到搜索不到QQ群或加群失败,请联系客服邮箱:kf@imooc.com
30
相似问题