gpt4 book ai didi

asp.net - 访问 DelegatingHandler 中执行的当前 Controller

转载 作者:行者123 更新时间:2023-12-02 05:59:45 25 4
gpt4 key购买 nike

我想知道是否可以在 DelegatingHandler 的 SendAsync 方法中访问正在执行(或即将执行)的 Controller ?我似乎不知道如何访问它,我认为这是因为它在 Controller 执行之外执行......

可以引用一下吗?

最佳答案

否,因为消息处理程序对原始 HttpRequestMessage 或原始 HttpResponseMessage 进行操作(在延续的情况下)。所以实际上,DelegatingHandlers 不存在“当前 Controller 正在执行”的概念,因为消息处理程序将在将请求分派(dispatch)到 Controller 之前被调用,或者(同样,在延续) Controller 返回响应后。

但是,这实际上取决于您想要做什么。

如果您想知道请求最终将路由到哪个 Controller ,您可以手动调用内部选择 Controller 的机制。

public class MyHandler : DelegatingHandler
{
protected override System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
var config = GlobalConfiguration.Configuration;
var controllerSelector = new DefaultHttpControllerSelector(config);

// descriptor here will contain information about the controller to which the request will be routed. If it's null (i.e. controller not found), it will throw an exception
var descriptor = controllerSelector.SelectController(request);

// continue
return base.SendAsync(request, cancellationToken);
}
}

关于asp.net - 访问 DelegatingHandler 中执行的当前 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12984514/

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