diff --git a/src/HotChocolate/Core/src/Execution.Abstractions/Execution/Extensions/ExecutionServiceProviderExtensions.cs b/src/HotChocolate/Core/src/Execution.Abstractions/Execution/Extensions/ExecutionServiceProviderExtensions.cs
new file mode 100644
index 00000000000..2abbd758fcc
--- /dev/null
+++ b/src/HotChocolate/Core/src/Execution.Abstractions/Execution/Extensions/ExecutionServiceProviderExtensions.cs
@@ -0,0 +1,32 @@
+using HotChocolate;
+
+namespace Microsoft.Extensions.DependencyInjection;
+
+public static class ExecutionServiceProviderExtensions
+{
+ ///
+ /// Gets the root service provider from the schema services. This allows
+ /// schema services to access application level services.
+ ///
+ ///
+ /// The schema.
+ ///
+ ///
+ /// The root service provider.
+ ///
+ public static IServiceProvider GetRootServiceProvider(this ISchemaDefinition schema)
+ => schema.Services.GetRequiredService().ServiceProvider;
+
+ ///
+ /// Gets the root service provider from the schema services. This allows
+ /// schema services to access application level services.
+ ///
+ ///
+ /// The schema services.
+ ///
+ ///
+ /// The root service provider.
+ ///
+ public static IServiceProvider GetRootServiceProvider(this IServiceProvider services)
+ => services.GetRequiredService().ServiceProvider;
+}
diff --git a/src/HotChocolate/Core/src/Execution.Abstractions/HotChocolate.Execution.Abstractions.csproj b/src/HotChocolate/Core/src/Execution.Abstractions/HotChocolate.Execution.Abstractions.csproj
index 90b52d518ac..3c4acc638af 100644
--- a/src/HotChocolate/Core/src/Execution.Abstractions/HotChocolate.Execution.Abstractions.csproj
+++ b/src/HotChocolate/Core/src/Execution.Abstractions/HotChocolate.Execution.Abstractions.csproj
@@ -23,6 +23,10 @@
+
+
+
+
diff --git a/src/HotChocolate/Core/src/Execution/DependencyInjection/InternalSchemaServiceCollectionExtensions.cs b/src/HotChocolate/Core/src/Execution/DependencyInjection/InternalSchemaServiceCollectionExtensions.cs
index 27ad8eaf8d3..57839a3b016 100644
--- a/src/HotChocolate/Core/src/Execution/DependencyInjection/InternalSchemaServiceCollectionExtensions.cs
+++ b/src/HotChocolate/Core/src/Execution/DependencyInjection/InternalSchemaServiceCollectionExtensions.cs
@@ -45,30 +45,4 @@ internal static IServiceCollection TryAddDiagnosticEvents(
return services;
}
-
- ///
- /// Gets the root service provider from the schema services. This allows
- /// schema services to access application level services.
- ///
- ///
- /// The schema.
- ///
- ///
- /// The root service provider.
- ///
- public static IServiceProvider GetRootServiceProvider(this Schema schema)
- => schema.Services.GetRequiredService().ServiceProvider;
-
- ///
- /// Gets the root service provider from the schema services. This allows
- /// schema services to access application level services.
- ///
- ///
- /// The schema services.
- ///
- ///
- /// The root service provider.
- ///
- public static IServiceProvider GetRootServiceProvider(this IServiceProvider services)
- => services.GetRequiredService().ServiceProvider;
}
diff --git a/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/CoreFusionGatewayBuilderExtensions.Services.cs b/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/CoreFusionGatewayBuilderExtensions.Services.cs
index 72ea99ebe98..d261f3d9aaf 100644
--- a/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/CoreFusionGatewayBuilderExtensions.Services.cs
+++ b/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/CoreFusionGatewayBuilderExtensions.Services.cs
@@ -1,3 +1,4 @@
+using HotChocolate.Execution;
using HotChocolate.Fusion.Configuration;
namespace Microsoft.Extensions.DependencyInjection;
@@ -19,4 +20,14 @@ public static IFusionGatewayBuilder AddApplicationService(
return builder.ConfigureSchemaServices(
static (sp, sc) => sc.AddSingleton(sp.GetRequiredService()));
}
+
+ public static ValueTask BuildRequestExecutorAsync(
+ this IFusionGatewayBuilder builder,
+ string? schemaName = null,
+ CancellationToken cancellationToken = default) =>
+ builder
+ .Services
+ .BuildServiceProvider()
+ .GetRequiredService()
+ .GetExecutorAsync(schemaName, cancellationToken);
}
diff --git a/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs b/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs
index 73294145fe5..a09cde1ead2 100644
--- a/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs
+++ b/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs
@@ -32,19 +32,6 @@ public static IFusionGatewayBuilder AddGraphQLGateway(
return CreateBuilder(services, name);
}
- ///
- /// Gets the root service provider from the schema services. This allows
- /// schema services to access application level services.
- ///
- ///
- /// The schema services.
- ///
- ///
- /// The root service provider.
- ///
- public static IServiceProvider GetRootServiceProvider(this IServiceProvider services)
- => services.GetRequiredService().ServiceProvider;
-
private static void AddRequestExecutorManager(
IServiceCollection services)
{