提问者:小点点

.Net core Web API 2 - 委派处理程序或中间件


我正在研究Web api 2(.NET Core 2)。我需要开发一些包装器类型的Web api,它调用一些第三方Web api。所以我的代码需要 Httpclient 来使用第三方 Web api,它本身也将用作 Web api。

一些第三方WebAPI需要HMAC身份验证,因此我需要自定义我的授权头并向其添加散列值。

最初我正在考虑为此创建中间件,但后来阅读了有关委派处理程序的信息,现在我不知何故混淆了 web API 中的委派/消息处理程序和中间件。

我还读到委派处理程序在.net核心中消失了(在核心Web API中注册一个新的委托处理程序 ASP.NET 但是HttpClientFactory在.net核心中可用,它需要委派处理程序。(https://www.stevejgordon.co.uk/httpclientfactory-aspnetcore-outgoing-request-middleware-pipeline-delegatinghandlers)有人可以澄清一下吗?

任何人都可以建议我的方案(实现Hamc身份验证以调用第三方Web api)
1)我应该使用什么委派处理程序或中间件?
2)如果.net核心的委派处理程序没有消失,何时应使用委派处理程序以及何时应使用中间件?


共1个答案

匿名用户

我的理解是,

您对出站 http 客户端使用委派处理程序;这意味着用于向外部服务发送请求的 http 客户端。

鉴于中间件用于您收到的请求;这意味着,外部人员向您的 API 发送请求。

但我同意,这一切都非常令人困惑。从在dotnet core中找到有关使用DemissionatingHandler作为控制器中间件的任何有用信息是多么困难,我想说微软在传入请求时正在逐步淘汰带有中间件的DemissionatingHandler

我想利用 DelgatingHandler 作为记录传入消息以及发送到外部 API 的任何请求的一种方式,但我最终对出站请求使用了 DelegatingHandler,为入站请求使用了中间件。

正如他们在维基中所描述的:

“如果你的应用程序使用自定义HTTP模块或HTTP处理程序,你需要一个计划将它们迁移到 ASP.NET Core。ASP.NET 核心中最有可能的替代品是中间件 https://learn.microsoft.com/en-us/dotnet/architecture/porting-existing-aspnet-apps/middleware-modules-handlers#aspnet-modules-and-handlers。