首页 > 后端开发 > C#.Net教程 > C# ASP.NET Core 中间件与 HttpModule 有何不同?

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

PHPz
发布: 2023-08-28 10:21:10
转载
649 人浏览过

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

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

因为模块的顺序主要基于应用程序生命周期事件。 请求和响应的执行顺序保持相同。

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

中间件在 Startup.cs 代码中配置,而不是 web.config 文件(入口点 对于应用程序)

与 HttpModule 不同,可以完全控制 get 的执行内容以及执行顺序。作为 它们按照添加的顺序执行。

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

中间件独立于这些事件。

中间件独立于主机。

内置 Asp.Net core 中间件

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

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>();
   }
}
登录后复制

//通过使用扩展方法as在请求管道中添加自定义中间件 如下图

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
   app.UseMiddleware<MyMiddleware>()
   app.Run(async (context) =>{
      await context.Response.WriteAsync("Hello World!");
   });
}
登录后复制

以上是C# ASP.NET Core 中间件与 HttpModule 有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板