Asp.NET Core官方内置了20多种中间件供我们使用,在不是复杂需求的情况下,常用的中间件完全能满足我们程序的应用,下面我们介绍一下ASP.NET Core官方常用的10种内置中间件 。.
1、异常处理中间件
分为两种,在开发环境中使用 UseDeveloperExceptionPage 生产环境使用UseExceptionHandler。
当应用程序在开发环境中运行时,可以使用开发人员异常页中间件( UseDeveloperExceptionPage )报告应用程序运行时的错误。
当应用程序在生产环境中运行时,可以使用生产环境的异常处理中间件( UseExceptionHandler )捕获下面中间件中引发的异常。
使用顺序是在生成错误的组件之前。异常终端或为新应用提供默认网页的终端。
var app = builder.Build();
//非开发环境中使用
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
2、HTTPS重定向中间件
HTTPS重定向中间件( UseHttpsRedirection )能将HTTP请求重定向到HTTPS,非HTTPS的站点配置非常的方便。
app.UseHttpsRedirection();//注册
3、静态文件中间件
静态文件中间件( UseStaticFiles )返回静态文件,为提供静态文件和目录浏览提供支持,并简化进一步请求处理。
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(builder.Environment.ContentRootPath, "MyStaticFiles")),
RequestPath = "/StaticFiles"
});
//上面代码是MyStaticFiles 目录层次结构通过 StaticFiles URI 段公开
//访问MyStaticFiles目录会指向/StaticFiles
4、Cookie中间件
Cookie策略中间件( UseCookiePolicy )。跟踪用户是否同意存储个人信息,并强制实施 cookie 字段(如 secure 和 SameSite)的最低标准。使用顺序是在发出 cookie 的中间件之前。示例:身份验证、会话、MVC (TempData)。
app.UseCookiePolicy();
5、路由中间件
路由中间件( UseRouting )用于定义和约束请求路由。
app.UseRouting();//的调用将路由匹配中间件配置为在自定义中间件之后运行。
app.MapGet("/", () => "Hello World!");//注册的终结点在管道末尾运行。
6、身份认证中间件
身份认证中间件( UseAuthentication )提供身份验证支持。验证通过之后才会允许用户访问安全资源。执行顺序需要在 HttpContext.User
之前, OAuth 回叫的终端。
app.UseAuthentication();
7、授权中间件
授权中间件( UseAuthorization )用于授权验证通过的用户可以访问哪些资源。类似身份认证中间件( UseAuthentication )。执行顺序需要在 HttpContext.User
之前, OAuth 回叫的终端。
app.UseAuthentication();
8、会话中间件
会话中间件( UseSession )提供对管理用户会话的支持。应用程序使用会话状态,需要在Cookie策略中间件之后和MVC中间件之前调用会话中间件。
app.UseSession();
9、终结点路由中间件
终结点路由中间件( UseEndpoints )向中间件管道添加终结点执行。实际路径执行的。可以配置我们的默认路由等。注意UseEndpoints 跟UseRouting的区别
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
10、跨域请求中间件
跨域请求中间件(UseCors)可以配置跨域的网站,跨域请求策略可防止恶意站点从另一站点读取敏感数据。使用顺序是 UseCors
的调用必须放在 UseRouting
之后,但在 UseAuthorization
之前。
var MyAllowSpecificOrigins = "_myAllowSpecificOrigins";//策略名称设置
//配置访问站点
builder.Services.AddCors(options =>
{
options.AddPolicy(name: MyAllowSpecificOrigins,
policy =>
{
policy.WithOrigins("http://example.com",
"http://www.contoso.com");
});
});
app.UseCors(MyAllowSpecificOrigins);//注册到中间件
结语
本文介绍了十种常用的官方中间件,大家可以参考使用。介绍的这些中间件有的是可以扩展使用的,另外需要注意的是中间件有使用顺序的,否则影响使用,篇幅有限这里就不多说了,具体大家可以查看官网文档。