diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvoker.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvoker.cs
index 42850ee874..ed3650cc23 100644
--- a/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvoker.cs
+++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvoker.cs
@@ -5,8 +5,19 @@
namespace Microsoft.AspNetCore.Mvc.Abstractions
{
+ ///
+ /// Defines an interface for invoking an MVC action.
+ ///
+ ///
+ /// An is created for each request the MVC handles by querying the set of
+ /// instances. See for more information.
+ ///
public interface IActionInvoker
{
+ ///
+ /// Invokes an MVC action.
+ ///
+ /// A which will complete when action processing has completed.
Task InvokeAsync();
}
}
diff --git a/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvokerProvider.cs b/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvokerProvider.cs
index a546a24735..fa39645aec 100644
--- a/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvokerProvider.cs
+++ b/src/Microsoft.AspNetCore.Mvc.Abstractions/Abstractions/IActionInvokerProvider.cs
@@ -3,6 +3,27 @@
namespace Microsoft.AspNetCore.Mvc.Abstractions
{
+ ///
+ /// Defines an interface for components that can create an for the
+ /// current request.
+ ///
+ ///
+ ///
+ /// instances form a pipeline that results in the creation of an
+ /// . The instances are ordered by
+ /// an ascending sort of the .
+ ///
+ ///
+ /// To create an , each provider has its method
+ /// called in sequence and given the same instance of . Then each
+ /// provider has its method called in the reverse order. The result is
+ /// the value of .
+ ///
+ ///
+ /// As providers are called in a predefined sequence, each provider has a chance to observe and decorate the
+ /// result of the providers that have already run.
+ ///
+ ///
public interface IActionInvokerProvider
{
///
@@ -26,8 +47,16 @@ public interface IActionInvokerProvider
///
int Order { get; }
+ ///
+ /// Called to execute the provider.
+ ///
+ /// The .
void OnProvidersExecuting(ActionInvokerProviderContext context);
+ ///
+ /// Called to execute the provider, after all methods have been called.
+ ///
+ /// The .
void OnProvidersExecuted(ActionInvokerProviderContext context);
}
}
diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Infrastructure/IActionInvokerFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/Infrastructure/IActionInvokerFactory.cs
new file mode 100644
index 0000000000..9ba0572416
--- /dev/null
+++ b/src/Microsoft.AspNetCore.Mvc.Core/Infrastructure/IActionInvokerFactory.cs
@@ -0,0 +1,28 @@
+// Copyright (c) .NET Foundation. All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+
+using Microsoft.AspNetCore.Mvc.Abstractions;
+
+namespace Microsoft.AspNetCore.Mvc.Infrastructure
+{
+ ///
+ /// Defines an interface for creating an for the current request.
+ ///
+ ///
+ /// The default implementation creates an by
+ /// calling into each . See for more
+ /// details.
+ ///
+ public interface IActionInvokerFactory
+ {
+ ///
+ /// Creates an for the current request associated with
+ /// .
+ ///
+ ///
+ /// The associated with the current request.
+ ///
+ /// An or null.
+ IActionInvoker CreateInvoker(ActionContext actionContext);
+ }
+}
diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/IActionInvokerFactory.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/IActionInvokerFactory.cs
deleted file mode 100644
index 0408afc123..0000000000
--- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/IActionInvokerFactory.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) .NET Foundation. All rights reserved.
-// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-
-using Microsoft.AspNetCore.Mvc.Abstractions;
-
-namespace Microsoft.AspNetCore.Mvc.Internal
-{
- public interface IActionInvokerFactory
- {
- IActionInvoker CreateInvoker(ActionContext actionContext);
- }
-}