当前位置: 首页 > 编程笔记 >

C#ASP.NET Core中间件与HttpModule有何不同?

蔚学真
2023-03-14
本文向大家介绍C#ASP.NET Core中间件与HttpModule有何不同?,包括了C#ASP.NET Core中间件与HttpModule有何不同?的使用技巧和注意事项,需要的朋友参考一下

通过web.config或global.asax配置HttpModule。开发人员无法控制执行顺序。

由于模块的顺序主要基于应用程序生命周期事件。请求和响应的执行顺序保持不变。

HttpModules可帮助您附加特定于应用程序事件的代码。HttpModules绑定到System.web。

中间件是使用Startup.cs代码而不是web.config文件(应用程序的入口)配置的

与HttpModules不同,可以完全控制执行什么操作以及执行顺序。按照添加顺序执行它们。

响应的中间件顺序与请求的顺序相反。

中间件独立于这些事件。

中间件与主机无关。

内置Asp.Net核心中间件

身份验证    提供身份验证支持。

CORS                  配置跨域资源共享。

路由              定义和约束请求路由。

会话              提供对管理用户会话的支持。

诊断       包括对错误页面和运行时信息的支持。

示例

public class MyMiddleware{
   private readonly RequestDelegate _next;
   private readonly ILogger _logger;
   public MyMiddleware(RequestDelegate next, ILoggerFactory logFactory){
      _next = next;
      _logger = logFactory.CreateLogger("MyMiddleware");
   }
   public async Task Invoke(HttpContext httpContext){
      _logger.LogInformation("MyMiddleware executing..");
      await _next(httpContext); // calling next middleware
   }
}

//用于将中间件添加到HTTP请求管道的扩展方法。

public static class MyMiddlewareExtensions{
   public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder
   builder){
      return builder.UseMiddleware<MyMiddleware>();
   }
}

//使用如下所示的使用扩展方法在请求管道中添加自定义中间件

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
   app.UseMiddleware<MyMiddleware>()
   app.Run(async (context) =>{
      await context.Response.WriteAsync("你好,世界!");
   });
}
 类似资料:
  • 使用哪一个来构建模拟 Web 服务来测试 Angular 4 应用?

  • 我正在尝试使用webpack热中间件来热加载我的应用程序的模块。我也在使用webpack开发中间件。 这是我的设置。 包裹json 网页包。配置。js srcServer。js 安装程序不工作。当我更新代码时,编译工作正常,当我刷新浏览器时,新的应用程序代码被执行。但是,这些模块没有被更换。 浏览器控制台中的输出 网络流量 请帮我解决这个问题。谢谢

  • 据我所知,数据库文件夹中不应该有任何文件。我错了吗?

  • 在faygo中,操作与中间件使用同一个接口实现,因此实际上每次请求调用的是一条有序、步阶可控的操作链。 操作链在每次请求中匹配到路由后被调用执行。 操作与中间件的接口定义: Handler interface { Serve(ctx *Context) error } 通常我们使用function或struct来实现操作或中间件。 从业务层面区分操作与中间件: 每个URL对应的操作链[]Han

  • rightReduce与中间件compose 然后,有心同学可能会发现,我们的makeTravel其实是一个对函数列表进行rightReduce的函数: <?php function compose(...$fns) { return array_right_reduce($fns, function($carry, $fn) { return function() us

  • 本文向大家介绍什么是浅拷贝?它与C#中的深拷贝有何不同?,包括了什么是浅拷贝?它与C#中的深拷贝有何不同?的使用技巧和注意事项,需要的朋友参考一下 浅拷贝- 对象的浅表副本将复制“主”对象,但不复制内部对象。 “内部对象”在原始对象及其副本之间共享。 浅表副本的问题在于两个对象不是独立的。如果修改一个对象,则更改将反映在另一个对象中。 深度复制- 深层副本是对象的完全独立的副本。如果我们复制对象,