这篇文章主要为大家详细介绍了ASP.NET Core中间件的设置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Asp.Net Core-中间件

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

案例

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中间件。

// 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。

// This method gets called by the runtime. // Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app) {   app.UseIISPlatformHandler();   app.UseRuntimeInfoPage();     app.Run(async (context) => {    var msg = Configuration["message"];    await context.Response.WriteAsync(msg);   }); }

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

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

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

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

更多相关文章

  1. 基于MVC4+EasyUI开发附件上传组件uploadify的使用
  2. asp.net core封装layui组件的示例详解
  3. 详解GoLang实现基于gin+jaeger的opentracing中间件
  4. web.xml 组件加载顺序详解
  5. 详解xmlhttp组件获取远程文件并筛选出目标数据
  6. 在 Vue.js 中使用无状态组件[每日前端夜话0xB9]
  7. 如何开发跨框架组件?[每日前端夜话0xA6]
  8. 链路追踪 SkyWalking 源码分析 —— Collector Storage 存储组件
  9. 链路追踪 SkyWalking 源码分析 —— Collector Cache 缓存组件

随机推荐

  1. 报表导出
  2. 请你介绍下所做的项目
  3. 【文末福利】Java面试通关要点(三)框架篇
  4. 「一周答疑」2018年的第13周
  5. 【文末福利】Java面试通关要点(四)微服务篇
  6. 「星球精选」如何保证幂等机制
  7. 【文末福利】Java面试通关要点(五)工程篇
  8. 「一周答疑」2018年的第14周
  9. 「一周答疑」2018年的第15周
  10. 「一周答疑」2018年的第16周