在asp.net core web api中是否有类似于DelegatingHandler的类。?

时间:2017-06-09 18:22:11

标签: asp.net asp.net-core asp.net-core-webapi

我正在尝试构建asp.net核心WEB API服务,其中我想发送一致的响应,并为所有请求返回类似的结构。

在早期版本的WEB API中,我们有 DelegatingHandler ,使用它我们可以拦截响应并将元数据信息添加到响应中。

以下网址解释的内容:https://www.devtrends.co.uk/blog/wrapping-asp.net-web-api-responses-for-consistency-and-to-provide-additional-information

我尝试过OWIN中间件,但没有得到结果。

有没有办法在核心WEB API中实现它。?

提前致谢。

2 个答案:

答案 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/