diff --git a/Directory.Build.props b/Directory.Build.props index 808abc1..d138994 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -21,7 +21,7 @@ - 1.0.0 + 1.0.1 prerelease diff --git a/src/AzureFunctions.DisabledWhen/IFunctionsWorkerApplicationBuilderExtensions.cs b/src/AzureFunctions.DisabledWhen/IFunctionsWorkerApplicationBuilderExtensions.cs index af665bf..155b91b 100644 --- a/src/AzureFunctions.DisabledWhen/IFunctionsWorkerApplicationBuilderExtensions.cs +++ b/src/AzureFunctions.DisabledWhen/IFunctionsWorkerApplicationBuilderExtensions.cs @@ -9,6 +9,18 @@ public static class IFunctionsWorkerApplicationBuilderExtensions { public static void UseDisabledWhen(this IFunctionsWorkerApplicationBuilder builder) { + // Validate that an underlying IFunctionMetadataProvider is already registered + // This is typically done by ConfigureFunctionsWebApplication() or ConfigureFunctionsWorkerDefaults() + var hasUnderlyingProvider = builder.Services.Any(descriptor => + descriptor.ServiceType == typeof(IFunctionMetadataProvider)); + + if (!hasUnderlyingProvider) + { + throw new InvalidOperationException( + "UseDisabledWhen() must be called after ConfigureFunctionsWebApplication() or ConfigureFunctionsWorkerDefaults(). " + + "No underlying IFunctionMetadataProvider was found in the service collection."); + } + builder.Services.AddSingleton(); } } \ No newline at end of file diff --git a/tests/AzureFunctions.DisabledWhen.Tests/AppBuilderStartupTests.cs b/tests/AzureFunctions.DisabledWhen.Tests/AppBuilderStartupTests.cs index 7dc7864..248434d 100644 --- a/tests/AzureFunctions.DisabledWhen.Tests/AppBuilderStartupTests.cs +++ b/tests/AzureFunctions.DisabledWhen.Tests/AppBuilderStartupTests.cs @@ -89,4 +89,5 @@ await testHost.StartAsync(new Dictionary await Assert.That(functionNames).Contains("AlwaysEnabled"); await Assert.That(functionNames).DoesNotContain("RequiresApiKey"); } + }