当前位置: 首页 > news >正文

贺州市网站建设_网站建设公司_后端工程师_seo优化

郴州建设信息网站,高明网站开发公司,旧房改造装修翻新,关键词排名是什么意思中间件是ASP.NET Core的一个重要特点#xff0c;ASP.NET Core应用程序之所以能够灵活地处理各种各样的请求#xff0c;完成都是由于中间件#xff0c;那么它究竟是怎么一回事呢#xff1f;一、理解中间件ASP.NET Core的一个主要特点是中间件#xff08;Middleware#xf… 中间件是ASP.NET Core的一个重要特点ASP.NET Core应用程序之所以能够灵活地处理各种各样的请求完成都是由于中间件那么它究竟是怎么一回事呢一、理解中间件ASP.NET Core的一个主要特点是中间件Middleware它通过中间件来处理传入的HTTP请求并将处理结果返回给发起请求的客户端。多个中间件构成了中间件管道Middleware pipeline也称为请求管道。之所以称其为管道是因为请求能够从一个中间件进入另一个中间件并以相反的顺序再出来如下图。对于一个ASP.NET Core应用程序所有向它发送的请求都是通过它里面添加的中间件来进行处理并返回响应比如显示网站的首页、对用户的认证、请求静态文件CSS、JavaScript文件等等。另外需要注意的是传入的请求不一定会遍历到所有添加的中间件有可能在经过某一个中间件处理时直接返回响应而不再继续前进比如如果用户没有通过认证或者程序出现异常时就不会再继续被下一个中间件处理。二、Program与Startup在一个ASP.NET Core应用中最主要的文件有两个一个是Program.cs另一个是Startup.cs其中Program.cs里包含了程序的入口即Program类中的Main函数。而Startup.cs文件中的Startup类则是用来配置当前应用程序。Startup类包含了两个方法即ConfigureServices和Configure其中前者主要是用于向依赖注入容器添加服务而后者则是用于为当前程序配置处理HTTP请求的请求管道在这个方法里我们可以根据需要添加多个中间件。public class Startup {public void ConfigureServices(IServiceCollection services){// 向依赖注入容器添加服务}public void Configure(IApplicationBuilder app, IHostingEnvironment env){// 配置中间件管道 } }三、添加中间件添加中间件的方法有3种这3种方法都是通过Configure方法的参数IApplicationBuilder接口所提供的方法实现的这个接口提供Use、Map以及Run方法均能够用来添加中间件。1、Run方法最简单它仅处理请求并不会将请求传入下一个中间件。因此对于如下代码会直接返回包含一串字符的响应。app.Run(async (context) { await context.Response.WriteAsync(Hello World!);}); 2、Use方法与Run方法不同的是它在处理请求后还可以把请求传递给下一个中间件并由其继续处理。public void Configure(IApplicationBuilder app, IHostingEnvironment env) {app.Use(async (context, next) {if (context.Request.Path.Value /welcome){await context.Response.WriteAsync(Hello World!);}else{Debug.WriteLine(中间件 A 开始);// ....await next();// ...Debug.WriteLine(中间件 A 结束);}});app.Run(async (context) {await context.Response.WriteAsync(Hello World!);}); } 以上代码的运行结果是显示“中间件 A 开始” - 在响应正文中写入信息 - 显示“中间件A结束。注意尽管Use方法能够让下一个中间件继续处理请求它也可以直接处理不再继续向前在上例中如果访问/welcome将直接返回响应。3、Map方法允许指定一个条件如果请求符合该条件则会新建一个分支并在该分支上继承处理请求而当请求处理结束后不返回原来的分支。public void Configure(IApplicationBuilder app) {app.Use(async (context, next) { Console.WriteLine(中间件 A开始);await next();Console.WriteLine(中间件 A结束);});app.Map(new PathString(/map),a a.Use(async (context, next) {Console.WriteLine(中间件 B开始);await next();Console.WriteLine(中间件 B结束);}));app.Run(async context {Console.WriteLine(中间件 C);await context.Response.WriteAsync(Hello world);}); } 当请求/map后其结果如下中间件 A开始 中间件 B开始 中间件 B结束 中间件 A结束 可以看到中间件C并未执行。事实上除了以上3个方法ASP.NET Core还提供了UseWhen和MapWhen这两个方法它们能够以更复杂的方式来添加中间件。通过上面的介绍我们可以明白两点第一中间件并不复杂它本质上就是用于处理HTTP请求的一段代码第二点中间件的添加顺序很重要因为它的添加顺序将决定应用程序如何处理HTTP请求。四、自定义中间件通过上面的方式添加的中间件我们可以称为内联中间件Inline Middleware这种方式在实际开发中很少见更常见的方式是创建自定义中间件类也即添加一个类通过这个类来代表中间件并实现其功能。而这个类需要满足两个条件第一它包含一个带有RequestDelegate类型参数的构造函数这个RequestDelegate类型的参数表示在请求管道中的下一个中间件第二它包含一个Invoke方法该方法接受一个HttpContext类型的参数并且这个方法的返回值为Task这个HttpContext类型的参数即表示传入的HTTP请求。以下是一个典型自定义中间件public class CheckRequestPathMiddleware {private RequestDelegate _next;public CheckRequestPathMiddleware(RequestDelegate requestDelegate){this._next requestDelegate;}public Task Invoke(HttpContext context){if (context.Request.Path.Value /about){context.Response.ContentType text/plain;charsetutf-8;context.Response.WriteAsync(Hello, 这条消息由自定义中间件输出);return Task.CompletedTask;}else{return _next(context);}} } 当中间件创建好之后要在Startup类中的Configure方法中把它添加到管道中只要使用IApplicationBuilder接口的UseMiddleware方法。app.UseMiddlewareCheckRequestPathMiddleware(); ASP.NET Core提供了很多中间件它们能够满足开发Web应用程序时所需要的各种功能这些中间件包括MVC、认证、静态文件、HTTPS重定向、CORS等。以下代码显示了一个标准应用程序所添加的中间件。public void Configure(IApplicationBuilder app, IHostingEnvironment env) {if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler(/Home/Error);// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.app.UseHsts();}app.UseHttpsRedirection();app.UseStaticFiles();app.UseCookiePolicy();app.UseMvc(routes {routes.MapRoute(name: default,template: {controllerHome}/{actionIndex}/{id?});}); } 以上这些以Use开头的方法均是向请求管道添加相应的中间件。我们可能注意到这些方法并不像我们刚才介绍的添加中间件的方法那样即要么使用Use/Map/Run等要么使用UseMiddleware方法。这里需要说明的是以上这些以Use开头的方法本质上也是使用了UseMiddleware方法来添加中间件的。这些方法只不过是通过额外定义的一个扩展方法来更方便地添加相应的中间件而已。我们同样也可以创建类似的扩展方法以方便别人使用我们所创建的自定义中间件。public static class CheckRequestPathMiddlewareExtentions {public static void UseCheckRequestPathMiddleware(this IApplicationBuilder app){app.UseMiddlewareCheckRequestPathMiddleware();} } 通过上面这个方法我们就可以在Configure方法中直接调用app.UseCheckRequestPathMiddleware方法来添加这个自定义中间件了。总结本文简要地介绍了ASP.NET Core中所引入的中间件的概念以及其使用方法中间件极大地方便了应用程序对HTTP请求的处理。多个中间件构成的管道为ASP.NET Core应用程序提供了更灵活的、更轻量的HTTP请求处理方式。
http://www.lebaoying.cn/news/29600.html

相关文章:

  • 杭州市江干区建设局网站商城网站模板免费
  • 免费功能网站如何管理网站内容
  • 青岛建设局网站首页用html制作网页
  • 网站里自己怎么做推广建设电子商务网站的必要性
  • 南沙区交通和建设局网站app拉新项目
  • 兼职网站7一12岁手工科技小制作
  • 阜阳手机端网站建设建网站要学哪些软件
  • 手机网站和微网站网站整站开发教程
  • 做网站 赚钱找做网站的公司
  • 做国外网站推广上海找做网站公司好
  • 先做他个天猫网站怎么做提卡网站
  • ipv6改造 网站怎么做6昆明网站建站推广
  • 网站注册平台网站建设费应入什么科目
  • 网站建设前期规划wordpress与微信教程 pdf
  • 世界上做的最好的前端网站wordpress适合建什么网站
  • 单页网站cpa虚拟主机百度怎么做推广和宣传
  • 做网站成功电子商务网站建设题目
  • 帮你做决定的网站厦门网页设计学校
  • 做网站网站需要注意什么手机p2p网站建设
  • 贵阳市住房和城乡建设局政务网站如何查询网站是不是asp做的
  • 动漫网站源码下载网站域名备案后公示
  • 网站建设公司六安百度搜索引擎入口登录
  • 网站建设php实验报告网站网站到底怎么做
  • 杭州富阳建设局网站首页微指数查询入口
  • PHP网站开发工程师招聘双语网站模板下载
  • wordpress 不同ip南宁网站优化公司电话
  • 山东网站域名备案时间中国建设劳动学会官方网站是多少
  • 品牌网站建设渠道企业展厅数字多媒体
  • 中国工商银行官方网站登录wordpress cdn 不刷新
  • 最专业微网站建设公司接外包项目的网站