Lazy create ResourceInvoker.InvokeResultAsync statemachine

This commit is contained in:
Ben Adams 2019-04-12 03:01:44 +01:00 committed by Ryan Nowak
parent 305249709c
commit 8bb54fc22a
1 changed files with 21 additions and 11 deletions

View File

@ -247,21 +247,31 @@ namespace Microsoft.AspNetCore.Mvc.Infrastructure
protected abstract Task InvokeInnerFilterAsync(); protected abstract Task InvokeInnerFilterAsync();
protected virtual async Task InvokeResultAsync(IActionResult result) protected virtual Task InvokeResultAsync(IActionResult result)
{ {
var actionContext = _actionContext; if (_diagnosticListener.IsEnabled() || _logger.IsEnabled(LogLevel.Trace))
_diagnosticListener.BeforeActionResult(actionContext, result);
_logger.BeforeExecutingActionResult(result);
try
{ {
await result.ExecuteResultAsync(actionContext); return Logged(this, result);
} }
finally
return result.ExecuteResultAsync(_actionContext);
static async Task Logged(ResourceInvoker invoker, IActionResult result)
{ {
_diagnosticListener.AfterActionResult(actionContext, result); var actionContext = invoker._actionContext;
_logger.AfterExecutingActionResult(result);
invoker._diagnosticListener.BeforeActionResult(actionContext, result);
invoker._logger.BeforeExecutingActionResult(result);
try
{
await result.ExecuteResultAsync(actionContext);
}
finally
{
invoker._diagnosticListener.AfterActionResult(actionContext, result);
invoker._logger.AfterExecutingActionResult(result);
}
} }
} }