我正在尝试构建asp.net核心WEB API服务,其中我想发送一致的响应,并为所有请求返回类似的结构。
在早期版本的WEB API中,我们有 DelegatingHandler ,使用它我们可以拦截响应并将元数据信息添加到响应中。
我尝试过OWIN中间件,但没有得到结果。
有没有办法在核心WEB API中实现它。?
提前致谢。
答案 0 :(得分:1)
不知道你究竟尝试了什么,但在ASP.NET Core中,中间件正是你所需要的,如:
文档中的中间件是组装到应用程序管道中以处理请求和响应的软件。 每个组件选择是否将请求传递给管道中的下一个组件,并且可以在管道中调用下一个组件之前和之后执行某些操作。
Migrating HTTP Modules to Middleware部分解释了ASP.NET Core中的请求管道与先前版本之间的区别,并且应该帮助您了解如何编写将以您需要的方式执行的中间件。
同时查看相关的SO问题:Registering a new DelegatingHandler in ASP.NET Core Web API
答案 1 :(得分:0)
我们可以在ASP.net Core中实现类似于拦截器的功能吗
在ASP.NET核心中,每个请求都希望调用其他外部服务,并读取动态更改的身份验证详细信息(例如用户名和密码),并将其存储/更新为应用程序机密,以发送下游服务。与Middleware一起尝试过,但是仅调用一次该外部服务并将其插入到应用程序Secrets字典中。如果在该外部服务中更改了密码,但由于中间件管道始终未向该外部服务进行调用而没有反映该密码,则该密码不会反映出来。
拦截器参考:https://www.c-sharpcorner.com/article/interceptors-an-important-feature-of-http-client/