[英]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.