Asp.net 如何使用MessageProcessingHandler结束处理并返回响应消息?
我在WebAPI中偶然发现了Asp.net 如何使用MessageProcessingHandler结束处理并返回响应消息?,asp.net,asp.net-web-api,Asp.net,Asp.net Web Api,我在WebAPI中偶然发现了MessageProcessingHandler类。它是DelegatingHandler的孩子。课堂上几乎没有任何信息,MS文档也特别稀薄,只是说: 如果处理程序不需要 异步操作,因为对请求和响应的操作 信息很快。最常见的用法是从这个类派生 并重写ProcessRequest和ProcessResponse方法 所以我想带全班同学出去转转,看看感觉如何。我在一件事上被难住了如何结束处理管道并发送响应消息返回? 例如:假设我有一个检查身份验证的处理程序,检查失败,我想
MessageProcessingHandler
类。它是DelegatingHandler
的孩子。课堂上几乎没有任何信息,MS文档也特别稀薄,只是说:
如果处理程序不需要
异步操作,因为对请求和响应的操作
信息很快。最常见的用法是从这个类派生
并重写ProcessRequest
和ProcessResponse
方法
所以我想带全班同学出去转转,看看感觉如何。我在一件事上被难住了如何结束处理管道并发送响应消息
返回?
例如:假设我有一个检查身份验证的处理程序,检查失败,我想返回一个HTTP401/403(我不是说哪个,所以我可以避免:-)。使用
MessageProcessingHandler
似乎不可能。是吗?正如我们可以看到的消息processinghandler
继承自DelegatingHandler
,我发现:
首先,我们不能在HttpMessageHandler
的实现类中实现sendsync
方法,因为它是密封的。但正如我们从MS文档中看到的,如果我们实现一个DelegatingHandler
,我们可以跳过内部处理程序,直接在SendAsync
覆盖方法中创建响应
其次,ProcessRequest
方法将HttpRequestMessage
作为输入并返回HttpRequestMessage
,它不会返回HttpResponseMessage
ProcessResponse
do返回响应,但它将在操作完成执行后执行
最后,MessageProcessingHandler
class注释说:
处理程序的基类型,只对
请求和/或响应消息
因此答案很明显,
ProcessRequest
不发送ResponseMessage
返回,只做一些小的处理。顺便说一句,有些人也在这里登录并返回原始请求 GlobalConfiguration.Configuration.MessageHandler.Add(新建YourMessageHandler())代码>在global.asax
为meDid工作评论回答为您工作?