gpt4 book ai didi

asp.net - 如何使用MessageProcessingHandler结束处理并返回响应消息?

转载 作者:行者123 更新时间:2023-12-03 03:38:14 24 4
gpt4 key购买 nike

我偶然发现了 WebAPI 中的 MessageProcessingHandler 类。它是DelegatingHandler 的子级。几乎没有关于该类的信息,MS 文档也特别薄弱,只是说:

The MessageProcessingHandler is useful if the handler doesn't require asynchronous operations, because operations on request and response messages are fast. The most common usage is to derive from this class and override the ProcessRequest and ProcessResponse methods.

所以我想我应该带大家去体验一下,看看感觉如何。我被一件事难住了......如何结束处理管道并发回ResponseMessage

例如:假设我有一个检查身份验证的处理程序,检查失败,并且我想返回 HTTP 401/403(我不是说哪个,这样我就可以避免 holy war :- )。 MessageProcessingHandler 似乎不可能。对吗?

最佳答案

我们可以看到 MessageProcessingHandler 继承自 DelegatingHandler,我发现:

首先,我们不能在HttpMessageHandler的实现类中实现SendAsync方法,因为它是密封的。但正如我们从 MS 文档中看到的,如果我们实现 DelegatingHandler,我们可以跳过内部处理程序并直接在 SendAsync 重写方法中创建响应。

其次,ProcessRequest方法接受HttpRequestMessage作为输入并返回HttpRequestMessage,它不会返回HttpResponseMessage >。 ProcessResponse确实返回响应,但会在action执行完成后执行。

最后,MessageProcessingHandler类注释说:

A base type for handlers which only do some small processing of request and/or response messages.

所以答案很明显,ProcessRequest不会发回ResponseMessage,而只做一些小的处理。顺便说一句,有些人也登录这里并返回原始请求。

关于asp.net - 如何使用MessageProcessingHandler结束处理并返回响应消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22594767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com