asp.net core实例教程之如何设置中间件


本文摘自PHP中文网,作者零下一度,侵删。

Asp.Net Core-中间件

在这一章,我们将了解如何设置中间件。中间件技术在 ASP.NET Core中控制我们的应用程序如何响应 HTTP 请求。它还可以控制应用程序的异常错误,这是一个在如何进行身份验证和授权用户执行特定的操作的关键。

  • 中间件是组装成应用的管道来处理请求和响应的软件组件。

  • 每个组件可以选择是否要在管道中将请求传递到下一个组件,并可以在管道中执行某些操作之前和之后的任务。

  • Request委托用于构建请求管道。Request委托用来处理每个HTTP请求。

  • 每件中间件在 ASP.NET Core都是一个对象,并且每一块有非常具体、 专注和有限的作用。

  • 最终,我们需要很多的中间件为应用程序提供适当的行为。

现在让我们假设我们想将每个对我们应用程序的请求都记录日志。

  • 在这种情况下,我们安装到应用程序中的第一块中间件是一个日志组件。

  • 这个日志程序可以看到一切传入的请求,然后该中间件只是记录一些信息,然后传递这个请求下一个块中间件。

  • 中间件是以一系列的组件出现在这个处理管道中。

  • 我们安装到应用程序的下一个中间件是一个授权组件。

  • 一个组件可能是寻找特定cookie或访问HTTP标头中的令牌。

  • 如果授权组件发现一个令牌,它允许请求继续。

  • 如果不是,授权组件本身可能会响应请求的HTTP错误代码或将用户重定向到登录页面。

  • 否则,授权组件将请求传递给下一个路由器的中间件。

  • 一个路由器查看URL,并确定下一步的行动。

  • 路由器是在做一些回应,如果路由器没有找到任何回应,路由器本身可能会返回404 Not Found错误。


案例

现在让我们通过一个简单的例子来理解更多关于中间件的知识。我们通过使用我们的启动类的Configure方法来配置中间件组件。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

using Microsoft.AspNet.Builder;

using Microsoft.AspNet.Hosting;

using Microsoft.AspNet.Http;

using Microsoft.Extensions.DependencyInjection;

using Microsoft.Extensions.Configuration; 

namespace FirstAppDemo {

   public class Startup {

      public Startup() {

         var builder = new ConfigurationBuilder()

            .AddJsonFile("AppSettings.json");

         Configuration = builder.Build();

      

      public IConfiguration Configuration { get; set; } 

         

      // This method gets called by the runtime.

      // Use this method to add services to the container.

      // For more information on how to configure your application,

      // visit http://go.microsoft.com/fwlink/?LinkID=398940

      public void ConfigureServices(IServiceCollection services) {

      

        

      // This method gets called by the runtime. 

      // Use this method to configure the HTTP request pipeline.

      public void Configure(IApplicationBuilder app) {

         app.UseIISPlatformHandler(); 

           

         app.Run(async (context) => {

            var msg = Configuration["message"];

            await context.Response.WriteAsync(msg);

         }); 

      

      // Entry point for the application.

      public static void Main(string[] args) => WebApplication.Run<Startup>(args);

   }

}

Configure()方法内,我们将调用IApplicationBuilder接口的扩展方法来添加中间件。

默认情况下在一个新的空项目有两块中间件-

  • IISPlatformHandler

  • Middleware registered with app.Run


IISPlatformHandler

IISPlatformHandler允许我们使用Windows身份验证。它将着眼于每个传入请求,看看是否有任何Windows身份信息相关的请求,然后调用下一个块中间件。

Middleware registered with app.Run

在这种情况下一个中间件在app.Run中注册的中间件。Run方法允许我们传入另一种方法,我们可以使用它来处理每一个响应。Run方法不是你经常会看到的,我们可以称它为一个中间件的终端。

你注册运行的中间件将永远不会有机会调用另一个中间件,它唯一能做的就是接收请求,便要产生某种反应。

你也访问到一个响应对象,你可以在响应对象中添加一些字符串。

如果你想在app.Run之后注册另一个中间件,这段中间件将永远不会被调用,因为Run方法是一个中间件的终端。它不会调用下一个块中间件。

如何添加一个中间件

让我们着手进行以下步骤来添加另一个中间件 ?

步骤1?右键单击项目并选择Manage NuGet Packages。

步骤2?搜索 Microsoft.aspnet.diagnostics,此特定的软件包包含许多不同种的中间件,我们可以使用。

步骤3?如果该包没有安装在您的项目中,那选择安装这个包。

步骤4?现在让我们在Configure()方法调用app.UseWelcomePage中间件。


1

2

3

4

5

6

7

8

9

// This method gets called by the runtime. 

// Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app) {

   app.UseIISPlatformHandler();

   app.UseWelcomePage(); 

     

   app.Run(async (context) => {

      var msg = Configuration["message"];

      await context.Response.WriteAsync(msg);

   });

步骤 5 ? 运行您的应用程序,您将看到以下的欢迎屏幕。

这个欢迎屏幕可能不是那么有用。

步骤6?让我们试试别的东西,可能是更有用的,而不是使用欢迎页面,我们将使用RuntimeInfoPage。


1

2

3

4

5

6

7

8

9

1 // This method gets called by the runtime. 

 2 // Use this method to configure the HTTP request pipeline.  3 public void Configure(IApplicationBuilder app) {

 4    app.UseIISPlatformHandler();

 5    app.UseRuntimeInfoPage(); 

 6      7    app.Run(async (context) => {

 8       var msg = Configuration["message"];

 9       await context.Response.WriteAsync(msg);

10    }); 

11 }

第 7 步 ? 保存您的 Startup.cs 页面并刷新您的浏览器,你会看到下面的页面。

这个 RuntimeInfoPage 是中间件,将只响应一个特定的 URL 的请求。如果传入的请求与该 URL 不匹配,这个中间件只是让请求传递到下一件中间件。该请求将通过 IISPlatformHandler 中间件,然后转到 UseRuntimeInfoPage 中间件。它不会创建响应,所以它会转到我们的应用程序。运行并显示该字符串。

步骤8?我们在URL结尾添加“ runtimeinfo”。现在,您将看到一个页面,该页面是由中间件运行时信息页面。

你将看到一个返回页面,它给你展示了一些关于你的运行时环境,如操作系统、运行时版本,结构,类型和您正在使用的所有包的信息。

以上就是asp.net core实例教程之如何设置中间件的详细内容!

相关阅读 >>

asp.net core实例教程之配置

分享asp.net学习笔记(4)文件夹

asp.net使用x509certificate2出现的一些问题的解决方法分享(图)

传播智客asp.net高级系列视频资料分享

asp.net禁用页面缓存的方法总结

详细介绍asp.net core静态文件的使用教程

asp.net 后台添加css、js、meta标签

asp.net?web?如何使用会话状态详解

关于asp.net视频教程的资源分享

.net mvc从视图传参到控制器的3种形式

更多相关阅读请进入《asp.net》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...