当前位置: 首页 > wzjs >正文

做网站有必要做app吗软件开发公司的管理

做网站有必要做app吗,软件开发公司的管理,上海公司注册网上查名,济宁融合百度推广公司文章目录 前言一、中间件的本质定义:类比: 二、作用场景:三、中间件的执行顺序四、中间件的配置方式1)委托形式(最常见):2)类形式: 五、核心方法六、注意事项七、中间件 …

文章目录

  • 前言
  • 一、中间件的本质
    • 定义:
    • 类比:
  • 二、作用场景:
  • 三、中间件的执行顺序
  • 四、中间件的配置方式
    • 1)委托形式(最常见):
    • 2)类形式:
  • 五、核心方法
  • 六、注意事项
  • 七、中间件 vs 过滤器(Filter)
  • 总结


前言

ASP.NET Core 中间件是构成请求处理管道的核心组件,用于处理 HTTP 请求和响应。


一、中间件的本质

定义:

  • 中间件是按顺序执行的组件,串联成请求处理管道(Pipeline),每个组件负责处理请求或响应的特定阶段。

类比:

  • 类似工厂流水线,每个工位(中间件)对请求进行加工,最终生成响应。

二、作用场景:

  • 典型场景:
    • 身份验证/授权(如 UseAuthentication
    • 静态文件处理(如 UseStaticFiles
    • 异常处理(如 UseExceptionHandler
    • 日志记录、请求日志
    • 路由匹配(如 UseRouting
    • 自定义业务逻辑(如缓存、请求改写)

三、中间件的执行顺序

  • 关键规则:顺序至关重要,顺序决定行为,先注册的中间件先执行请求,后执行响应(类似栈结构)。
  • 推荐顺序
    app.UseExceptionHandler();    // 1. 通常放在管道最前端,确保后续中间件的异常被捕获。
    app.UseHttpsRedirection();	  // 2. HTTPS重定向
    app.UseStaticFiles();         // 3. 若请求匹配静态文件,直接响应,终止后续中间件
    app.UseRouting();            // 4. 路由解析
    app.UseAuthentication();      // 5. 身份验证
    app.UseAuthorization();		  // 6. 授权
    app.UseEndpoints(...);        // 7. 终结点处理(如 MVC)
    

四、中间件的配置方式

1)委托形式(最常见):

  • 示例
    app.Map("/test", async midbuilder => {midbuilder.Use(async (context, next) => {context.Response.ContentType = "text/html";// 处理请求(如记录日志)await next.Invoke();// 调用下一个中间件// 处理响应(如修改响应头)});midbuilder.Use(async (context, next) => {        // 处理请求await next.Invoke();// 调用下一个中间件// 处理响应});midbuilder.Run(async context => {        await context.Response.WriteAsync("run<br/>");});});
    

2)类形式:

  • 实现
     public class RequestTimeMiddleware{private readonly RequestDelegate next;public RequestTimeMiddleware(RequestDelegate next){this.next = next;}public async Task InvokeAsync(HttpContext context){var start = DateTime.Now;await next(context);var duration = DateTime.Now - start;await context.Response.WriteAsync($"Time {duration.TotalMilliseconds}ms</br>");}}
    
  • 注册中间件
    app.UseMiddleware<RequestTimeMiddleware>();
    

五、核心方法

  • Use:添加可传递请求到下一个中间件的组件。

     midbuilder.Use(async (context, next) => {        // 处理请求await next.Invoke();// 调用下一个中间件// 处理响应});
    
  • UseWhen:根据条件动态选择中间件。

    app.UseWhen(context => context.Request.Headers.ContainsKey("X-Custom-Header"), 
    branch => branch.UseMiddleware<CustomHeaderMiddleware>());
    
  • Run:添加终止中间件(不调用 next)。

    app.Run(async context => 
    {await context.Response.WriteAsync("Hello World");
    });
    
  • Map:根据请求路径分支管道。

    app.Map("/admin", adminApp =>
    {adminApp.UseAuthentication();adminApp.UseAuthorization();
    });
    
  • 完整示例

    app.Map("/test", async midbuilder => {midbuilder.Use(async (context, next) => {context.Response.ContentType = "text/html";// 处理请求(如记录日志)await next.Invoke();// 调用下一个中间件// 处理响应(如修改响应头)});midbuilder.Use(async (context, next) => {        // 处理请求await next.Invoke();// 调用下一个中间件// 处理响应});midbuilder.Run(async context => {        await context.Response.WriteAsync("run<br/>");});});
    

六、注意事项

  • 静态文件中间件应在路由前注册,避免路由匹配影响性能。
  • 日志中间件若需记录完整处理时间,需放在异常处理之后,确保异常处理后的响应时间也被记录。
  • 使用next()时,若后续中间件抛出异常,异常会向上冒泡到已执行过的中间件中,需合理使用try-catch。

七、中间件 vs 过滤器(Filter)

  • 中间件:作用于整个请求管道,与 MVC 无关(更底层)。

  • 过滤器:专为 MVC 设计,处理 Controller/Action 特定逻辑(如模型绑定、权限校验)。


总结

中间件是 ASP.NET Core 请求处理的核心机制,通过管道式设计实现高度模块化和灵活的 HTTP 处理逻辑。理解其顺序性和短路机制是构建高效应用的关键。


文章转载自:

http://6rslW54p.jqsyp.cn
http://ZhdqcHvc.jqsyp.cn
http://8mjZ4IXm.jqsyp.cn
http://M7PaFBsz.jqsyp.cn
http://RrAhSrXR.jqsyp.cn
http://cdME16I6.jqsyp.cn
http://C9nQZOAf.jqsyp.cn
http://vjppTizV.jqsyp.cn
http://WFucMO3N.jqsyp.cn
http://WX2pjxse.jqsyp.cn
http://7W1yL52h.jqsyp.cn
http://BqL0zVVj.jqsyp.cn
http://Zn4TBNvb.jqsyp.cn
http://mAT3RaBl.jqsyp.cn
http://zNNaCVoy.jqsyp.cn
http://zHRgNus9.jqsyp.cn
http://UzRW19IQ.jqsyp.cn
http://TIGdqd5E.jqsyp.cn
http://40Jg6maz.jqsyp.cn
http://EgaouVz1.jqsyp.cn
http://d2lNXr0q.jqsyp.cn
http://SvpgeXUj.jqsyp.cn
http://xrP3krrW.jqsyp.cn
http://4iUZtq7F.jqsyp.cn
http://l42l7Zsk.jqsyp.cn
http://u3yMcP0G.jqsyp.cn
http://xC26Q6uf.jqsyp.cn
http://UUUMStcV.jqsyp.cn
http://CR7Y8wlx.jqsyp.cn
http://eoNLRERE.jqsyp.cn
http://www.dtcms.com/wzjs/688216.html

相关文章:

  • 网站刷流量对网站有影响吗pageadmincms
  • 外贸网站建设合同软件网站技术开发公司
  • 南京做网站的门户网是什么
  • 宜州做网站需要多少钱用微信公众平台做分类广告网站
  • 学网站开发哪个好长春网站建设联系吉网传媒优
  • 懒人手机网站做网站备案实名需要钱吗
  • ui设计和网站建设人员李伟宁深圳建站企业
  • 织梦网站怎么做seo优化国内国际新闻最新消息10条
  • 电商网站与大数据济南建设官方网站
  • 上线吧做的网站可以备案在线户型图设计
  • 网站查询站长工具网络系统简介
  • 长安外贸网站建设仿京东网站
  • 自己做网站不推广做兼职设计去哪个网站
  • google网站打不开西安免费网站建设
  • 中国商务商会官方网站房地产公司网站建设方案
  • 在元典公司做网站有合同吗旅游 网站建设
  • 厦门网站建设厦门seo百度推广外包
  • 网站seo工作wordpress 域名配置
  • 排版设计的网站十堰学校网站建设
  • xp花生壳做自己的网站同ip网站有什么危害
  • 重庆seo网站系统安卓 开发
  • 普通网站怎么做h5汕头网站模板
  • ppt插件 网站wordpress 360友链
  • 有专业设计网站吗php网站开发安全
  • 做MAD生肉网站基于wordpress的博客
  • 张家港电脑网站制作网站建设模板是什么
  • 北京建站优化公司互联网企业排名2021
  • 使页面具有动态效果的网站建设技术是外贸平台收费标准
  • 建设个人网站的好处佛山seo优化评价
  • 网站建设推广行业wordpress关闭手机版