中间件是一类连接软件组件和应用的计算机软件,它包括一组服务。以便于运行在一台或多台机器上的多个软件通过网络进行交互。该技术所提供的互操作性,推动了一致分布式体系架构的演进,该架构通常用于支持并简化那些复杂的分布式应用程序,它包括web服务器、事务监控器和消息队列软件。百度百科
中间件 官网介绍
用于组成应用程序管道来处理请求和响应的组件。管道内的每一个组件都可以选择是否将请求交给下一个组件,并在管道中调用下一个组件之前和之后执行某些操作。
请求委托
请求委托处理每一个HTTP请求。通过使用IApplicationBuilder 类型的Run、Map 以及Use 扩展方法来配置,并在Startup类中传给Configure 方法。
每个单独的请求委托都可以被指定为一个内嵌匿名方法,或其定义在一个可重用的类中。这些可重用的类被称作“中间件”或“中间件组件”。
请求管道
请求委托被用来建立请求管道,每个位于请求管道内的中间件组件负责调用管道中的下一个组件,或适时短路调用链。
ASP.NET 请求管道由一系列请求委托所构成。每个委托在下一个委托之前和之后都可选择执行操作。
请求管道的短路
任何委托都能选择停止传递到下一个委托,转而自己处理该请求。这可以避免一些不必要的工作,如一个授权(authorization)中间件只有通过身份验证之后才能调用下一个委托,否则就会被短路,并返回“Not Authorized”。
默认中间件组件
public void Configure(IApplicationBuilder app,IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");//错误页
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();//静态文件
app.UseCookiePolicy();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
错误处理 UseExceptionHandler
非开发环境时,UseExceptionHandler 是第一个被加入到管道中的中间件,因此会捕获之后调用中出现的任何异常,然后跳转到设置的异常页(/Home/Error)。
异常处理委托需要在管道的早期被调用,才能够捕捉到发生在管道内更深层次出现的异常。
HSTS UseHsts
将HTTP严格传输安全协议(HSTS)标头发送到客户端。
HTTPS重定向 UseHttpsRedirection
将HTTP请求重定向到HTTPS。官网介绍
静态文件服务器 UseStaticFiles
静态文件中间件不提供授权检查,有它提供的任何文件(包括wwwroot)下的文件都是公开可被访问的。