簡體   English   中英

使用端點路由和 MVC 時,如何從 Endpoint.RequestDelegate 獲取 IActionContextAccessor?

[英]How can I get the IActionContextAccessor from the Endpoint.RequestDelegate when using Endpoint Routing and MVC?

我有一個 asp .net core 3.1 應用程序並配置了 MVC 和端點路由。 假設我有一個 Endpoint 對象(它不會總是與當前請求關聯的 Endpoint),然后我有它的 RequestDelegate。 我想從這個 RequestDelegate 獲取 IActionContextAccessor。 在以下示例中,當我處於調試模式時,我可以看到 _actionContextAccessor,因此我知道它在那里。

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

在此處輸入圖片說明

我確定你想要更多關於我正在做的事情的上下文,如果你願意,我可以給你更多,但這個問題的要點是假設我有一個 Endpoint 對象並且我被配置為使用 MVC,怎么能我得到了 IActionContextAccessor?

更新

我最終想要得到的是動作參數。 只是輸入參數的類型。 我們遵循一種輸入模型約定,所以實際上我想要的是一種輸入模型的類型。

要確定操作參數的類型,無需使用IActionContextAccessor或它公開的ActionContext屬性。 一個Endpoint實例包含一組元數據:對於代表一個動作的端點,它包含一個ActionDescriptor的實例, ActionDescriptor ,它描述了一個動作。 它的一個屬性是Parameters ,它公開了該操作的參數集。

綜上所述,這里有一個示例,說明如何根據要求獲取單個操作參數的類型:

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

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

    // ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM