ASP.NET Core面试精讲系列一

💡 原文中文,约3600字,阅读约需9分钟。
📝

内容提要

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 来处理异常,分别用于生产和开发环境。

➡️

继续阅读