关于ASP.NET Core基础之中间件,以下是完整攻略:
什么是中间件?
中间件(Middleware)是ASP.NET Core应用程序中用于处理HTTP请求和响应的组件。中间件按照顺序依次执行,因此需要小心编写顺序,以确保它们按照预期工作。
中间件可以处理请求并返回响应,也可以将请求传递给下一个中间件,以便处理。中间件可以执行许多操作,比如日志记录、异常处理、压缩响应、身份验证等。
中间件的使用
要使用中间件,需要在Handler / Middleware 中注册它们。中间件通常在应用程序的Startup.cs文件中中配置。
在Configure()方法中,可以使用IApplicationBuilder类型的app参数将中间件添加到请求管道中。中间件的添加顺序很重要,因为它们按注册的顺序顺序执行
以下是一个简单的中间件的示例,它在 HTTP 请求的 Header 中添加一个 X-Content-Type-Options:X-Content-Type-Options:no sniff 行。
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
public class XContentTypeOptionsMiddleware
{
private readonly RequestDelegate _next;
public XContentTypeOptionsMiddleware(RequestDelegate next)
{
_next = next;
}
public Task Invoke(HttpContext context)
{
context.Response.Headers.Add("X-Content-Type-Options", "no sniff");
return _next(context);
}
}
// Extension method used to add the middleware to the HTTP request pipeline.
public static class XContentTypeOptionsMiddlewareExtensions
{
public static IApplicationBuilder UseXContentTypeOptionsMiddleware(this IApplicationBuilder builder)
{
return builder.UseMiddleware<XContentTypeOptionsMiddleware>();
}
}
要使用此中间件,请在Startup.cs文件的Configure()方法添加以下行:
app.UseXContentTypeOptionsMiddleware();
示例应用现在将在HTTP请求的 Header 中添加 X-Content-Type-Options:no sniff。
中间件链
Middlewares 可以被串联成一条中间件链,这样客户端请求只需按照顺序打破其中的某一个请求环节,中间件就会停止自己的处理并将其余的请求传递给下一个中间件处理。当最后一个中间件执行完成并且状态未改变时,响应将发送回客户端。
以下示例演示如何链式使用中间件。
public class Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Use(async (context, next) =>
{
await context.Response.WriteAsync("Hello World!");
await next();
});
app.Use(async (context, next) =>
{
await context.Response.WriteAsync(", from ASP.NET Core!");
await next();
});
}
}
以上代码展示了应用程序配置的三个基本元素:
-
app.Use() —— 这是一个添加中间件的扩展方法,添加中间件后的Use()方法将创建一个新的请求管道,其中每个请求按注册顺序传递中间件的集合。
-
context.Response.WriteAsync() —— 这是从中间件向客户端发送响应的静态扩展方法。
-
await next() —— 这是用于将中间件串连起来的委托,以接受处理权并将其委托给下一个中间件的方法。
示例应用程序中添加了两个中间件,分别向客户端发送 "Hello World!" 和 " , from ASP.NET Core!"。
现在访问该应用程序时,它将在浏览器中显示 "Hello World!, from ASP.NET Core!"。
以上就是ASP.NET Core基础之中间件的完整攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET Core基础之中间件 - Python技术站