首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在asp.net核心中,IStartupFilter的意义是什么?

在asp.net核心中,IStartupFilter的意义是什么?
EN

Stack Overflow用户
提问于 2018-07-20 15:46:54
回答 4查看 3.2K关注 0票数 7

IStartupFilter是库向应用程序添加中间件的机制的基础。根据Docs的说法,"IStartupFilter有助于确保中间件在应用程序请求处理流水线开始或结束时由库添加的中间件之前或之后运行“。

该机制是否允许您以Startup.Configure()无法完成的任何方式操作管道?

如果重点是模块化,那么您似乎只是在通过Startup.Configure()进行耦合,而通过IServicesCollection ()进行耦合(需要调用DI )。在简单的情况下(根据example),可以从ConfigureServices()中删除对services.AddTransient<IStartupFilter, ...>()的调用,并且可以添加app.AddMiddleware<MyMiddleware>()以更少的复杂性和魔力实现相同的功能。

该机制的要点是允许库应用应该包含哪些中间件的条件?如果是这样的话,它似乎缺乏asp.net核心一贯的经济性和设计的清晰度。

EN

回答 4

Stack Overflow用户

发布于 2020-02-21 04:08:29

在简单的情况下(根据示例),可以从ConfigureServices()中删除对services.AddTransient()的调用,并且可以添加app.AddMiddleware(),从而以较少的复杂性和魔力实现相同的功能。

那是胡说。

使用IStartupFilter和使用中间件之间有很大的区别。中间件是请求管道的一部分,这意味着它将在每个请求中执行。另一方面,IStartupFilter在应用程序启动时执行一次。

票数 6
EN

Stack Overflow用户

发布于 2018-09-05 14:30:38

为了回答我自己的问题,我认为主要的用例是使框架能够包含在构建时未知的程序集。这些文档在aspnetcore/Fundamentals/Host nhance an app from an external assembly in ASP.NET Core with IHostingStartup中介绍了这一点。(尽管文档中没有提到IStartupFilter,但是相关的StartupDiagnostics示例项目提到了。

票数 3
EN

Stack Overflow用户

发布于 2020-03-02 19:16:23

当您不想要应用程序作者的任何干预时,也就是说,您不希望调用app.Usexxxx(),但是应该使用不同的组件来配置该中间件,则通常使用IStartupFilter。现在,考虑这样一个场景,即使不执行请求管道,也要执行某些代码。让我们接受一个不存在的URI,并返回404错误,在这种情况下,请求处理管道将不会被执行,但启动过滤器将被执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51437607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档