Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ExecuteSultAsync(ActionContext)方法的用途是什么_C#_Asp.net_Asp.net Core - Fatal编程技术网

C# ExecuteSultAsync(ActionContext)方法的用途是什么

C# ExecuteSultAsync(ActionContext)方法的用途是什么,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,在webapi/mvc控制器中,控制器将返回ActionResult类型,并具有ExecuterSultAsyncActionContext方法 ExecuteSultAsyncActionContext方法的用途是什么? MVC将如何使用该方法?在它里面,ActionContext参数来自哪里?从Http请求 ExecuteSultAsyncActionContext方法的用途是什么 IActionResult是控制器操作方法返回的结果对象。ASP.NET Core通过调用IActionRes

在webapi/mvc控制器中,控制器将返回ActionResult类型,并具有ExecuterSultAsyncActionContext方法

ExecuteSultAsyncActionContext方法的用途是什么? MVC将如何使用该方法?在它里面,ActionContext参数来自哪里?从Http请求

ExecuteSultAsyncActionContext方法的用途是什么

IActionResult是控制器操作方法返回的结果对象。ASP.NET Core通过调用IActionResult::ExecuteSultAsyncActionContext方法来执行此结果。 Action方法可能返回不同类型的IActionResult,例如执行时向客户端发送json的JsonResult,执行时发送400响应的BadRequestResult等等。 您还可以创建自己的IActionResult实现。请注意,ExecuterSultAsyncActionContext方法应该向HTTP响应写入字节。例如,我创建了一个供您参考的。这是一个简单的实现,不包含太多复杂的逻辑

有些操作结果相当复杂,它们引入了一个新的IActionResultExecutor接口来处理这些过程,例如,ObjectResult使用IActionResultExecutor来处理这些过程。创建自己的实现时,是否使用IActionResultExecutor取决于您自己

MVC将如何使用该方法

WebApp开发人员不需要手动调用thisIActionResult::ExecuteSultAsyncActionContext方法。这是一个将由MVC/RazorPage子系统调用的方法。 如果您感兴趣,整个过程是: 收到一个即将到来的请求 将当前请求与预定义的路由表或图形匹配。如果匹配: 我们知道控制器名称、操作名称和其他路由数据。 由于我们已经知道了控制器名称和操作名称,ASP.NET Core生成了一个ActionDescriptor实例,该实例描述了目标C操作方法,例如参数。 由于ASP.NET Core已经知道控制器/动作并路由数据,因此它创建了一个IActionVoker实例来调用该动作方法pipline(包括过滤器),有关更多详细信息,请参阅: Action方法返回IActionResult的实例 在调用IActionResult::ExecuterSultAsyncActionContext之前,请在ResultExecuting方法上调用结果筛选器。 调用IActionResult::ExecuteSultAsyncActionContext 然后,在ResultExecuted方法上调用结果过滤器。 ActionContext参数来自何处?从Http请求

首先,底层服务器构建HttpContext。它包含一个模仿HTTP请求的请求属性

接下来,我们将在选择动作后获得另外两个对象:

RoutedData:路由数据,例如当前区域名称、当前页面名称、e.t.c。 ActionDescriptor:与当前路由匹配的当前操作的描述。 使用上述三个对象,ASP.NET Core只需新建ActionContext即可创建ActionContext。例如,基于IRouter的路由系统创建actionContext,如下所示:

// create action context
var actionContext = new ActionContext(context.HttpContext, routeData, actionDescriptor);

// create action invoker
var invoker = _actionInvokerFactory.CreateInvoker(actionContext);
if (invoker == null){ throw ...;}

// invoke the pipeline
return invoker.InvokeAsync();