Asp.Net Core-中间件
在这一章,我们将相识怎样设置中间件。中间件手艺在 ASP.NET Core中掌握我们的运用顺序怎样相应 HTTP 要求。它还能够掌握运用顺序的异常毛病,这是一个在怎样举行身份验证和受权用户实行特定的操纵的症结。
中间件是组装成运用的管道来处置惩罚要乞降相应的软件组件。
每一个组件能够挑选是不是要在管道中将要求通报到下一个组件,并能够在管道中实行某些操纵之前和以后的使命。
Request托付用于构建要求管道。Request托付用来处置惩罚每一个HTTP要求。
每件中间件在 ASP.NET Core都是一个对象,而且每一块有异常细致、 专注和有限的作用。
终究,我们须要很多的中间件为运用顺序供应恰当的行为。
如今让我们假定我们想将每一个对我们运用顺序的要求都纪录日记。
在这类状况下,我们装置到运用顺序中的第一块中间件是一个日记组件。
这个日记顺序能够看到统统传入的要求,然后该中间件只是纪录一些信息,然后通报这个要求下一个块中间件。
中间件是以一系列的组件出如今这个处置惩罚管道中。
我们装置到运用顺序的下一个中间件是一个受权组件。
一个组件多是寻觅特定cookie或接见HTTP标头中的令牌。
假如受权组件发明一个令牌,它许可要求继承。
假如不是,受权组件自身能够会相应要求的HTTP毛病代码或将用户重定向到登录页面。
不然,受权组件将要求通报给下一个路由器的中间件。
一个路由器检察URL,并肯定下一步的行为。
路由器是在做一些回应,假如路由器没有找到任何回应,路由器自身能够会返回404 Not Found毛病。
案例
如今让我们经由过程一个简朴的例子来明白更多关于中间件的学问。我们经由过程运用我们的启动类的Configure要领来设置中间件组件。
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。
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实例教程之怎样设置中间件的细致内容,更多请关注ki4网别的相干文章!