ASP.NET Core面试精讲系列一
内容提要
ASP.NET Core 中间件是按顺序处理 HTTP 请求的组件。可以配置中间件管道,创建自定义中间件,处理异常和启用 HTTPS 重定向等。中间件的执行顺序会影响其行为,短路可以通过不调用 next() 来实现。
关键要点
-
ASP.NET Core 中间件是 HTTP 请求管道中的组件,处理请求、传递请求或中断管道。
-
中间件在 Program.cs 中配置,ASP.NET Core 6+ 使用最小主机模型。
-
app.Use、app.UseMiddleware、app.Run 和 app.Map 的区别在于它们的调用方式和管道处理。
-
自定义中间件需要创建类并实现 Invoke 或 InvokeAsync 方法。
-
RequestDelegate 是表示管道中下一个中间件的委托。
-
中间件的执行顺序影响其行为,某些中间件必须在特定顺序中执行。
-
短路管道通过不调用 await next() 实现。
-
UseStaticFiles 用于提供静态文件,必须在路由之前添加。
-
UseExceptionHandler 和 UseDeveloperExceptionPage 用于处理异常。
-
app.UseHttpsRedirection() 用于将 HTTP 请求重定向到 HTTPS。
-
可以使用自定义文件提供程序提供静态文件和目录浏览。
-
终止中间件结束管道,不调用 next(),非终止中间件允许后续中间件执行。
-
集成认证/授权中间件需要在路由后、endpoints 前执行。
-
通过中间件启用和配置 CORS 需要在路由之前添加。
-
使用中间件进行日志或性能监控可以测量请求执行时间。
延伸问答
ASP.NET Core 中间件的主要功能是什么?
ASP.NET Core 中间件主要用于处理 HTTP 请求,可以处理请求、传递请求给下一个中间件或中断请求管道。
如何在 ASP.NET Core 中配置中间件?
在 ASP.NET Core 6+ 中,可以在 Program.cs 文件中使用 app.UseMiddleware<YourMiddleware>() 来配置中间件。
app.Use 和 app.Run 有什么区别?
app.Use 添加可以调用 next 的中间件,而 app.Run 终止中间件,不调用 next,结束管道。
如何编写自定义中间件?
编写自定义中间件需要创建一个类,构造函数接收 RequestDelegate,并实现 Invoke 或 InvokeAsync 方法。
中间件的执行顺序为什么重要?
中间件的执行顺序影响其行为,某些中间件如认证和授权必须按照特定顺序执行。
如何处理 ASP.NET Core 中的异常?
可以使用 UseExceptionHandler 和 UseDeveloperExceptionPage 来处理异常,分别用于生产和开发环境。