在 ASP.NET Core 中安装 MVC

到目前为止,我们在本系列视频中使用的 ASP.NET Core 项目是使用“空”项目模板生成的。目前这个项目没有设置和安装 MVC。

两个步骤学会在 ASP.NET Core 配置 MVC

步骤 1:在 Startup.cs 文件中的 Startup 类的**ConfigureServices()**方法中,见下方代码。 这行代码将所需的 MVC 服务添加到 asp.net core 中的依赖注入容器中。

services.AddMvc();

步骤 2:在 Configure()方法中,将**UseMvcWithDefaultRoute()**中间件添加到我们的应用程序的请求处理管道中。 修改代码,如下所示。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseStaticFiles(); app.UseMvcWithDefaultRoute(); app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}

注意,我们在**UseMvcWithDefaultRoute()中间件之前放置了UseStaticFiles()中间件。 此顺序很重要,因为如果请求是针对静态文件(如图像,CSS 或 JavaScript 文件),则UseStaticFiles()**中间件将处理请求并使管道的其余部分短路。

因此, 如果请求是针对静态文件, 则不会执行**UseMvcWithDefaultRoute () **中间件, 从而避免不必要的处理。

另一方面, 如果请求是 MVC 请求, **UseStaticFiles ()**中间件将把该请求传递给 UseMvcWithDefaultRoute() 中间件, 中间件将处理请求并生成响应。

请注意, 除了UseMvcWithDefaultRoute () 中间件之外, 我们还有**UseMvc ()**中间件。现在, 让我们使用 UseMvcWithDefaultRoute() 中间件。

在我们即将推出的视频中, 当我们讨论路由时, 我们将讨论这两个中间件之间的区别。

此时,如果我们运行应用程序并导航到 URL -http://localhost:49119,我们会看到“Hello World!” 消息显示在浏览器中。

  • 使用管道中配置的 UseMvcWithDefaultRoute()中间件,当我们向 URL 发出请求时 - http://localhost:49119

  • 由于请求不是针对静态文件,因此 UseStaticFiles()中间件会将请求传递给 UseMvcWithDefaultRoute()中间件

  • 由于我们尚未在 URL 中指定控制器和操作方法段,因此 UseMvcWithDefaultRoute()中间件在 HomeController 中查找 Index()方法。

  • 由于目前我们的应用程序中没有 HomeController,因此 UseMvcWithDefaultRoute()中间件将请求传递给使用 Run()方法注册的中间件,因此我们看到“Hello World!” 此中间件生成的消息。

现在让我们看看,如果我们删除 Run()中间件会发生什么。 此时,Configure()方法中的代码必须如下所示。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseStaticFiles(); app.UseMvcWithDefaultRoute();
}

有了上面的代码,如果我们再次向 URL 发出请求 - http://localhost:49119,我们现在看到 404 错误。 这是因为 UseMvcWithDefaultRoute()中间件没有找到带有 Index()动作的 HomeController,并且管道中没有其他中间件,所以我们看到 404 错误。

添加 HomeController

在项目根文件夹中添加 Controllers 文件夹。 在“控制器”中添加一个新的控制器。 复制并粘贴以下代码。

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

生成解决方案并向应用程序 URL 发出请求 - http://localhost:49119。 现在,您将看到浏览器中显示的字符串 - “Hello from MVC”

欢迎添加个人微信号:Like若所思。

欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!

在 Asp.Net Core 中安装 MVC的更多相关文章

  1. (9)ASP.NET Core 中的MVC路由二

    1.URL生成 MVC应用程序可以使用路由的URL生成功能,生成指向操作(Action)的URL链接. IUrlHelper 接口用于生成URL,是MVC与路由之间的基础部分.在控制器.视图和视图组件 ...

  2. (8)ASP.NET Core 中的MVC路由一

    1.前言 ASP.NET Core MVC使用路由中间件来匹配传入请求的URL并将它们映射到操作(Action方法).路由在启动代码(Startup.Configure方法)或属性(Controlle ...

  3. ASP.NET Core中使用自定义MVC过滤器属性的依赖注入

    除了将自己的中间件添加到ASP.NET MVC Core应用程序管道之外,您还可以使用自定义MVC过滤器属性来控制响应,并有选择地将它们应用于整个控制器或控制器操作. ASP.NET Core中常用的 ...

  4. [译]ASP.NET Core中使用MediatR实现命令和中介者模式

    作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9866068.html 在本文中,我将解释命令模式,以及如何利用基于命令模式的第三方库来实现它们,以及如何 ...

  5. 基础教程:视图中的ASP.NET Core 2.0 MVC依赖注入

    问题 如何在ASP.NET Core MVC Views中注入和使用服务. 解 更新 启动 类来为MVC添加服务和中间件. 添加一项服务 添加一个Controller,返回 ViewResult. 添 ...

  6. 如何在ASP.NET Core中构造UrlHelper,及ASP.NET Core MVC路由讲解

    参考文章: Unable to utilize UrlHelper 除了上面参考文章中介绍的方法,其实在ASP.NET Core MVC的Filter拦截器中要使用UrlHelper非常简单.如下代码 ...

  7. ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)

    在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...

  8. ASP.NET Core Web 应用程序系列(二)- 在ASP.NET Core中使用Autofac替换自带DI进行批量依赖注入(MVC当中应用)

    在上一章中主要和大家分享在MVC当中如何使用ASP.NET Core内置的DI进行批量依赖注入,本章将继续和大家分享在ASP.NET Core中如何使用Autofac替换自带DI进行批量依赖注入. P ...

  9. ASP.NET Core 5.0 MVC中的 Razor 页面 介绍

    Razor 是一个用于将基于服务器的代码嵌入到网页中的标记语法. Razor语法由 Razor 标记.c # 和 HTML 组成. 通常包含 Razor 的文件的扩展名 cshtml Razor 语法 ...

随机推荐

  1. Java网络传输数据加密算法

    算法可逆,具有跨平台特性 import java.io.IOException; import java.io.UnsupportedEncodingException; import java.se ...

  2. 转载-用excel批量生成insert语句

    用excel批量生成insert语句   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/h ...

  3. List集合分组实现教程

    封装一个方法,用一个Map来实现,这里是根据bean类的seq字段进行拆分的,分成好几个list private LinkedHashMap<String,List<HandleInfo& ...

  4. LuoguP5290 [十二省联考2019]春节十二响 | 启发式合并

    还有33天就要高考了,我在干啥-- 题目概述 一棵有根树,每个节点有权值. 要求把所有节点分成组,具有祖先-后代关系的两个节点不能被分到同一组. 每一组的代价是所包含的节点的最大权值,最小化所有组的代 ...

  5. 如何通过 Freemark 优雅地生成那些花里胡哨的复杂样式 Excel 文件?

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  6. C# 分布式自增ID算法snowflake(雪花算法)

    概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的.有些时候我们希望能使用一种简 ...

  7. 初学dubbo遇到的那些坑

    昨天刚接触dubbo,遇到了一些坑,当然,这也与刚从eclipse换到了idea有一定的关系. 首先是maven仓库的问题,c盘下面的.m2文件夹默认的会被开发工具访问,所以要访问自己的本地仓库,.m ...

  8. SpringMVC 之 上传文件

    一.需求: 利用SpringMVC实现上传文件的功能 二.思路: 1.我们可以在SpringMVC中,通过配置一个MultipartResolver来上传文件. 2.通过MultipartFile f ...

  9. Struts2 常量配置

    除了action的配置,struts还有其他的一些配置,比如编码方式. 这些配置用键值对来表示,键是固定的,是常量,所以也叫做常量配置. 常量配置有5种方式,Struts会按以下顺序依次搜索加载常量( ...

  10. 第三篇Scrum冲刺博客

    第三篇Scrum冲刺博客 一.站立式会议 提供当天站立式会议照片一张 二.每个人的工作 成员 已完成工作 明天计划完成的工作 遇到的困难 林剑峰 初步完成用户界面 用户界面跳转到用户信息页面的按钮,设 ...