练习 - 使用内置中间件
ASP.NET Core 包含一组内置中间件组件,可处理常见任务,例如路由、身份验证和 HTTP 日志记录。 你可以使用这些组件为应用添加功能,而无需编写自定义中间件。
你的团队负责人委托你为公司创建一个基本网站。 该网站应在主页上显示欢迎信息,并在单独的 /about
页面上显示公司的简要历史。 该应用的先前版本在 /history
URL 上有公司历史,因此你需要将请求从 /history
重定向到 /about
以保持与现有链接的兼容性。
你将使用内置的 MapGet
方法和 UrlRewriter
中间件来完成这些任务。
创建 ASP.NET Core 应用
需要一个 ASP.NET Core 应用来扮演团队应用的角色。 让我们使用 Visual Studio Code 中的 C# 开发工具包扩展创建一个新的 ASP.NET Core 应用。
启动 Visual Studio Code。
按 Ctrl+Shift+P 打开命令面板。
搜索并选择 .NET:New Project...”。
搜索并选择“ASP.NET Core 空”。
选择或创建新项目的文件夹。
将新应用命名为“MyWebApp”。
选择“创建项目”以创建项目。
当新项目打开时,展开
Solution Explorer
窗格以查看项目文件。
运行应用
测试应用以确保它运行。
在 Visual Studio Code 中,按 F5 生成并运行应用。
- 出现提示时,选择“C#”作为调试程序。
- 出现提示时,选择“C#:MyWebApp [默认配置]”作为要使用的启动配置。
此命令启动应用并将其托管在本地 Web 服务器上。 浏览器窗口随即打开并显示“Hello, World!”
关闭浏览器窗口,并通过在 Visual Studio Code 中按 shift+F5 来停止应用。
映射终结点并添加 URL 重写程序
现在,你已有一个工作应用,接下来让我们将欢迎消息添加到主页。
打开 Program.cs 文件。
在
app.MapGet("/", () => "Hello World!");
行中,将“Hello World!”消息更改为“欢迎使用 Contoso!”app.MapGet("/", () => "Welcome to Contoso!");
app.MapGet()
将 HTTP GET 请求映射到指定的路径。 ASP.NET Core 的此功能称为“终结点路由”。 此代码将分支添加到管道。 如果请求路径为/
,则终结点路由中间件会将请求路由到此终结点,后者随后在响应中写入“欢迎使用 Contoso!”。在下一行中添加以下代码:
app.MapGet("/about", () => "Contoso was founded in 2000.");
此代码添加另一个终结点。 如果请求路径为
/about
,终结点会将“我们的公司成立于 2000 年”写入响应。在第一个 之前,添加以下代码:
app.MapGet()
app.UseRewriter(new RewriteOptions().AddRedirect("history", "about"));
此代码添加 URL 重写程序中间件组件,该组件用于将请求从
/history
重定向到/about
。AddRedirect()
方法采用两个参数:用于匹配请求路径的正则表达式模式,以及要重定向到的替换路径。将下面的 指令添加到文件的顶部:
using Microsoft.AspNetCore.Rewrite;
此指令解析对
RewriteOptions
类的引用。
测试更改
- 保存所有更改并像以前一样运行应用。
- 当浏览器窗口打开时,请注意根 URL 会显示“欢迎使用 Contoso!”将
/about
添加到 URL,然后按 Enter。 浏览器应显示“Contoso 成立于 2000 年”。 - 将
/about
替换为 URL 中的/history
,然后按 Enter。 浏览器应重定向到/about
。 - 请让应用保持运行状态以完成下一个练习。