练习 - 使用内置中间件

已完成

ASP.NET Core 包含一组内置中间件组件,可处理常见任务,例如路由、身份验证和 HTTP 日志记录。 你可以使用这些组件为应用添加功能,而无需编写自定义中间件。

你的团队负责人委托你为公司创建一个基本网站。 该网站应在主页上显示欢迎信息,并在单独的 /about 页面上显示公司的简要历史。 该应用的先前版本在 /history URL 上有公司历史,因此你需要将请求从 /history 重定向到 /about 以保持与现有链接的兼容性。

你将使用内置的 MapGet 方法和 UrlRewriter 中间件来完成这些任务。

创建 ASP.NET Core 应用

需要一个 ASP.NET Core 应用来扮演团队应用的角色。 让我们使用 Visual Studio Code 中的 C# 开发工具包扩展创建一个新的 ASP.NET Core 应用。

  1. 启动 Visual Studio Code。

  2. 按 Ctrl+Shift+P 打开命令面板

  3. 搜索并选择 .NET:New Project...”。

  4. 搜索并选择“ASP.NET Core 空”

    命令面板的屏幕截图,其中选择了“ASP.NET Core 空”。

  5. 选择或创建新项目的文件夹。

  6. 将新应用命名为“MyWebApp”

  7. 选择“创建项目”以创建项目

  8. 当新项目打开时,展开 Solution Explorer 窗格以查看项目文件。

运行应用

测试应用以确保它运行。

  1. 在 Visual Studio Code 中,按 F5 生成并运行应用。

    1. 出现提示时,选择“C#”作为调试程序。
    2. 出现提示时,选择“C#:MyWebApp [默认配置]”作为要使用的启动配置。

    此命令启动应用并将其托管在本地 Web 服务器上。 浏览器窗口随即打开并显示“Hello, World!”

  2. 关闭浏览器窗口,并通过在 Visual Studio Code 中按 shift+F5 来停止应用。

映射终结点并添加 URL 重写程序

现在,你已有一个工作应用,接下来让我们将欢迎消息添加到主页。

  1. 打开 Program.cs 文件。

  2. app.MapGet("/", () => "Hello World!"); 行中,将“Hello World!”消息更改为“欢迎使用 Contoso!”

    app.MapGet("/", () => "Welcome to Contoso!");
    

    app.MapGet() 将 HTTP GET 请求映射到指定的路径。 ASP.NET Core 的此功能称为“终结点路由”。 此代码将分支添加到管道。 如果请求路径为 /,则终结点路由中间件会将请求路由到此终结点,后者随后在响应中写入“欢迎使用 Contoso!”。

  3. 在下一行中添加以下代码:

    app.MapGet("/about", () => "Contoso was founded in 2000.");
    

    此代码添加另一个终结点。 如果请求路径为 /about,终结点会将“我们的公司成立于 2000 年”写入响应。

  4. 在第一个 之前,添加以下代码:app.MapGet()

    app.UseRewriter(new RewriteOptions().AddRedirect("history", "about"));
    

    此代码添加 URL 重写程序中间件组件,该组件用于将请求从 /history 重定向到 /aboutAddRedirect() 方法采用两个参数:用于匹配请求路径的正则表达式模式,以及要重定向到的替换路径。

  5. 将下面的 指令添加到文件的顶部:

    using Microsoft.AspNetCore.Rewrite;
    

    此指令解析对 RewriteOptions 类的引用。

测试更改

  1. 保存所有更改并像以前一样运行应用。
  2. 当浏览器窗口打开时,请注意根 URL 会显示“欢迎使用 Contoso!”将 /about 添加到 URL,然后按 Enter。 浏览器应显示“Contoso 成立于 2000 年”。
  3. /about 替换为 URL 中的 /history,然后按 Enter。 浏览器应重定向到 /about
  4. 请让应用保持运行状态以完成下一个练习。