gpt4 book ai didi

c# - 使用端点路由和 MVC 时,如何从 Endpoint.RequestDelegate 获取 IActionContextAccessor?

转载 作者:行者123 更新时间:2023-12-04 10:41:57 24 4
gpt4 key购买 nike

我有一个 asp .net core 3.1 应用程序并配置了 MVC 和端点路由。假设我有一个 Endpoint 对象(它不会总是与当前请求关联的 Endpoint),然后我有它的 RequestDelegate。我想从这个 RequestDelegate 获取 IActionContextAccessor。在以下示例中,当我处于 Debug模式时,我可以看到 _actionContextAccessor,因此我知道它在那里。

var endpoint = this.httpContextAccessor.HttpContext.GetEndpoint();

enter image description here

我确定你想要更多关于我正在做的事情的上下文,如果你愿意,我可以给你更多,但这个问题的要点是假设我有一个 Endpoint 对象并且我被配置为使用 MVC,怎么能我得到了 IActionContextAccessor?

更新

我最终想要得到的是 Action 参数。只是输入参数的类型。我们遵循一种输入模型约定,所以实际上我想要的是一种输入模型的类型。

最佳答案

要确定操作参数的类型,无需使用 IActionContextAccessorActionContext它公开的属性(property)。安 Endpoint实例包含一组元数据:对于代表一个 Action 的端点,它包含一个 ActionDescriptor 的实例。 ,不出所料,它描述了一个 Action 。它的属性之一是 Parameters ,它公开了该操作的参数集。

综上所述,这里有一个示例,说明如何根据要求获取单个操作参数的类型:

var actionDescriptor = endpoint.Metadata.GetMetadata<ActionDescriptor>();

if (actionDescriptor != null)
{
var actionParameterType = actionDescriptor.Parameters.SingleOrDefault()?.ParameterType;

// ...
}

关于c# - 使用端点路由和 MVC 时,如何从 Endpoint.RequestDelegate 获取 IActionContextAccessor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59888866/

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