Skip to content

.NET: [Bug]: Hosting.AzureFunctions requires a user-defined dummy [OrchestrationTrigger] to start #5927

@jaliyaudagedara

Description

@jaliyaudagedara

Description

When using Microsoft.Agents.AI.Hosting.AzureFunctions to host an agent in an Azure Functions isolated worker app, the host fails to expose the agent endpoint unless the user defines at least one [OrchestrationTrigger] function in their own assembly — even though the hosting package itself is built on Durable Functions and contains its own orchestrations internally.

In practice, every consumer of this package has to add a no-op orchestrator like this just to satisfy the Functions runtime's discovery:

public static class DummyOrchestrator
{
    [Function(nameof(DummyOrchestrator))]
    public static Task RunOrchestrator(
        [OrchestrationTrigger] TaskOrchestrationContext context)
    {
        return Task.CompletedTask;
    }
}

What I expected: ConfigureDurableAgents(...) should be sufficient on its own. The orchestrations shipped inside the hosting package should be discovered and registered without the user having to declare a dummy orchestrator in their own assembly.

What actually happens: Without the dummy orchestrator, the Durable Task extension does not bind correctly at startup and the agent HTTP endpoint never becomes available.
Image

Azure Functions Core Tools
Core Tools Version:       4.10.0+2ced9a89e29b04615bc55cd527c074250266362f (64-bit)
Function Runtime Version: 4.1048.200.26180

[2026-05-18T18:21:42.570Z] Found C:\Users\Jaliya\Desktop\maf-samples\dotnet\samples\03-durable-functions\DurableFunctions.csproj. Using for user secrets file configuration.
[2026-05-18T18:21:42.918Z] Building host: version spec: , startup suppressed: 'False', configuration suppressed: 'False', startup operation id: '4470c3b3-2c0c-44b9-bba3-572ab52bfd05'
[2026-05-18T18:21:42.924Z] Reading host configuration file 'C:\Users\Jaliya\Desktop\maf-samples\dotnet\samples\03-durable-functions\bin\Debug\net10.0\host.json'
[2026-05-18T18:21:42.926Z] Host configuration file read:
[2026-05-18T18:21:42.926Z] {
[2026-05-18T18:21:42.927Z]   "version": "2.0",
[2026-05-18T18:21:42.928Z]   "logging": {
[2026-05-18T18:21:42.929Z]     "logLevel": {
[2026-05-18T18:21:42.929Z]       "default": "Information"
[2026-05-18T18:21:42.930Z]     }
[2026-05-18T18:21:42.931Z]   }
[2026-05-18T18:21:42.931Z] }
[2026-05-18T18:21:42.953Z] Extension Bundle not loaded. Loading extensions from C:\Users\Jaliya\Desktop\maf-samples\dotnet\samples\03-durable-functions\bin\Debug\net10.0. BundleConfigured: False, PrecompiledFunctionApp: False, LegacyBundle: False, DotnetIsolatedApp: True, isLogicApp: False
[2026-05-18T18:21:42.955Z] Script Startup resetting load context with base path: 'C:\Users\Jaliya\Desktop\maf-samples\dotnet\samples\03-durable-functions\bin\Debug\net10.0\.azurefunctions'.
[2026-05-18T18:21:42.963Z] Loading startup extension 'Mcp'
[2026-05-18T18:21:42.989Z] Loaded extension 'Mcp' (1.0.0.0)
[2026-05-18T18:21:42.996Z] Loading startup extension 'Startup'
[2026-05-18T18:21:42.997Z] Loaded extension 'Startup' (1.0.0.0)
[2026-05-18T18:21:43.013Z] Reading host configuration file 'C:\Users\Jaliya\Desktop\maf-samples\dotnet\samples\03-durable-functions\bin\Debug\net10.0\host.json'
[2026-05-18T18:21:43.014Z] Host configuration file read:
[2026-05-18T18:21:43.015Z] {
[2026-05-18T18:21:43.016Z]   "version": "2.0",
[2026-05-18T18:21:43.017Z]   "logging": {
[2026-05-18T18:21:43.018Z]     "logLevel": {
[2026-05-18T18:21:43.018Z]       "default": "Information"
[2026-05-18T18:21:43.019Z]     }
[2026-05-18T18:21:43.020Z]   }
[2026-05-18T18:21:43.021Z] }
[2026-05-18T18:21:43.062Z] Starting host metrics provider.
[2026-05-18T18:21:43.275Z] Initializing Warmup Extension.
[2026-05-18T18:21:43.300Z] Resolved secret storage provider BlobStorageSecretsRepository
[2026-05-18T18:21:43.400Z] MCP server endpoint: http://localhost:7098/runtime/webhooks/mcp
[2026-05-18T18:21:43.402Z] MCP server legacy SSE endpoint: http://localhost:7098/runtime/webhooks/mcp/sse
[2026-05-18T18:21:43.404Z] Initializing backplane message processing.
[2026-05-18T18:21:43.428Z] Initializing Host. OperationId: '4470c3b3-2c0c-44b9-bba3-572ab52bfd05'.
[2026-05-18T18:21:43.434Z] Host initialization: ConsecutiveErrors=0, StartupCount=1, OperationId=4470c3b3-2c0c-44b9-bba3-572ab52bfd05
[2026-05-18T18:21:43.464Z] Loading functions metadata
[2026-05-18T18:21:43.467Z] Worker indexing is enabled
[2026-05-18T18:21:43.470Z] Fetching metadata for workerRuntime: dotnet-isolated
[2026-05-18T18:21:43.471Z] Reading functions metadata (Worker)
[2026-05-18T18:21:43.989Z] {
[2026-05-18T18:21:43.991Z]   "ProcessId": 27556,
[2026-05-18T18:21:43.992Z]   "RuntimeIdentifier": "win-x64",
[2026-05-18T18:21:43.993Z]   "WorkerVersion": "2.52.0.0",
[2026-05-18T18:21:43.994Z]   "ProductVersion": "2.52.0\u002Be704163e5177f5364bf168ce1d554772b886a069",
[2026-05-18T18:21:43.995Z]   "FrameworkDescription": ".NET 10.0.8",
[2026-05-18T18:21:43.996Z]   "OSDescription": "Microsoft Windows 10.0.26100",
[2026-05-18T18:21:43.997Z]   "OSArchitecture": "X64",
[2026-05-18T18:21:43.998Z]   "CommandLine": "C:\\Users\\Jaliya\\Desktop\\maf-samples\\dotnet\\samples\\03-durable-functions\\bin\\Debug\\net10.0\\DurableFunctions.dll --host 127.0.0.1 --port 48088 --workerId 8120137d-ddb5-4e36-ab93-4dd069adc2e9 --requestId 6cdcdf10-a877-4088-8fd7-4acd3fd4dd6a --grpcMaxMessageLength 2147483647 --functions-uri http://127.0.0.1:48088/ --functions-worker-id 8120137d-ddb5-4e36-ab93-4dd069adc2e9 --functions-request-id 6cdcdf10-a877-4088-8fd7-4acd3fd4dd6a --functions-grpc-max-message-length 2147483647"
[2026-05-18T18:21:43.998Z] }
[2026-05-18T18:21:44.146Z] 2 functions found (Worker)
[2026-05-18T18:21:44.155Z] Reading functions metadata (Custom)
[2026-05-18T18:21:44.161Z] 0 functions found (Custom)
[2026-05-18T18:21:44.168Z] 2 functions loaded
[2026-05-18T18:21:44.173Z] ScriptJobHostOptions
[2026-05-18T18:21:44.173Z] {
[2026-05-18T18:21:44.174Z]   "FileWatchingEnabled": true,
[2026-05-18T18:21:44.175Z]   "FileLoggingMode": "DebugOnly",
[2026-05-18T18:21:44.176Z]   "FunctionTimeout": "00:30:00",
[2026-05-18T18:21:44.177Z]   "TelemetryMode": "ApplicationInsights"
[2026-05-18T18:21:44.177Z] }
[2026-05-18T18:21:44.178Z] LoggerFilterOptions
[2026-05-18T18:21:44.179Z] {
[2026-05-18T18:21:44.179Z]   "MinLevel": "None",
[2026-05-18T18:21:44.180Z]   "Rules": [
[2026-05-18T18:21:44.181Z]     {
[2026-05-18T18:21:44.182Z]       "ProviderName": null,
[2026-05-18T18:21:44.183Z]       "CategoryName": "Microsoft.Hosting.Lifetime",
[2026-05-18T18:21:44.184Z]       "LogLevel": "None",
[2026-05-18T18:21:44.185Z]       "Filter": null
[2026-05-18T18:21:44.186Z]     },
[2026-05-18T18:21:44.186Z]     {
[2026-05-18T18:21:44.187Z]       "ProviderName": "Azure.Functions.Cli.Diagnostics.ColoredConsoleLoggerProvider",
[2026-05-18T18:21:44.188Z]       "CategoryName": null,
[2026-05-18T18:21:44.189Z]       "LogLevel": "None",
[2026-05-18T18:21:44.189Z]       "Filter": null
[2026-05-18T18:21:44.190Z]     },
[2026-05-18T18:21:44.191Z]     {
[2026-05-18T18:21:44.191Z]       "ProviderName": "Azure.Functions.Cli.Diagnostics.ColoredConsoleLoggerProvider",
[2026-05-18T18:21:44.192Z]       "CategoryName": null,
[2026-05-18T18:21:44.193Z]       "LogLevel": null,
[2026-05-18T18:21:44.193Z]       "Filter": "<AddFilter>b__0"
[2026-05-18T18:21:44.194Z]     },
[2026-05-18T18:21:44.195Z]     {
[2026-05-18T18:21:44.195Z]       "ProviderName": null,
[2026-05-18T18:21:44.196Z]       "CategoryName": null,
[2026-05-18T18:21:44.197Z]       "LogLevel": null,
[2026-05-18T18:21:44.198Z]       "Filter": "<AddFilter>b__0"
[2026-05-18T18:21:44.198Z]     },
[2026-05-18T18:21:44.199Z]     {
[2026-05-18T18:21:44.200Z]       "ProviderName": null,
[2026-05-18T18:21:44.200Z]       "CategoryName": null,
[2026-05-18T18:21:44.201Z]       "LogLevel": null,
[2026-05-18T18:21:44.202Z]       "Filter": "<AddFilter>b__0"
[2026-05-18T18:21:44.203Z]     },
[2026-05-18T18:21:44.204Z]     {
[2026-05-18T18:21:44.204Z]       "ProviderName": null,
[2026-05-18T18:21:44.205Z]       "CategoryName": "Function",
[2026-05-18T18:21:44.206Z]       "LogLevel": "Information",
[2026-05-18T18:21:44.206Z]       "Filter": null
[2026-05-18T18:21:44.207Z]     },
[2026-05-18T18:21:44.208Z]     {
[2026-05-18T18:21:44.208Z]       "ProviderName": null,
[2026-05-18T18:21:44.209Z]       "CategoryName": null,
[2026-05-18T18:21:44.210Z]       "LogLevel": "Information",
[2026-05-18T18:21:44.210Z]       "Filter": null
[2026-05-18T18:21:44.211Z]     },
[2026-05-18T18:21:44.212Z]     {
[2026-05-18T18:21:44.212Z]       "ProviderName": "Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider",
[2026-05-18T18:21:44.213Z]       "CategoryName": null,
[2026-05-18T18:21:44.214Z]       "LogLevel": "None",
[2026-05-18T18:21:44.214Z]       "Filter": null
[2026-05-18T18:21:44.215Z]     },
[2026-05-18T18:21:44.216Z]     {
[2026-05-18T18:21:44.216Z]       "ProviderName": "Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider",
[2026-05-18T18:21:44.217Z]       "CategoryName": null,
[2026-05-18T18:21:44.218Z]       "LogLevel": null,
[2026-05-18T18:21:44.219Z]       "Filter": "<AddFilter>b__0"
[2026-05-18T18:21:44.220Z]     },
[2026-05-18T18:21:44.221Z]     {
[2026-05-18T18:21:44.222Z]       "ProviderName": "Azure.Functions.Cli.Diagnostics.ColoredConsoleLoggerProvider",
[2026-05-18T18:21:44.222Z]       "CategoryName": null,
[2026-05-18T18:21:44.223Z]       "LogLevel": null,
[2026-05-18T18:21:44.224Z]       "Filter": "<AddFilter>b__0"
[2026-05-18T18:21:44.225Z]     }
[2026-05-18T18:21:44.225Z]   ]
[2026-05-18T18:21:44.226Z] }
[2026-05-18T18:21:44.227Z] LoggerFilterOptions
[2026-05-18T18:21:44.227Z] {
[2026-05-18T18:21:44.228Z]   "MinLevel": "None",
[2026-05-18T18:21:44.229Z]   "Rules": [
[2026-05-18T18:21:44.229Z]     {
[2026-05-18T18:21:44.230Z]       "ProviderName": null,
[2026-05-18T18:21:44.231Z]       "CategoryName": "Microsoft.Hosting.Lifetime",
[2026-05-18T18:21:44.232Z]       "LogLevel": "None",
[2026-05-18T18:21:44.232Z]       "Filter": null
[2026-05-18T18:21:44.233Z]     },
[2026-05-18T18:21:44.234Z]     {
[2026-05-18T18:21:44.235Z]       "ProviderName": "Azure.Functions.Cli.Diagnostics.ColoredConsoleLoggerProvider",
[2026-05-18T18:21:44.236Z]       "CategoryName": null,
[2026-05-18T18:21:44.237Z]       "LogLevel": "None",
[2026-05-18T18:21:44.238Z]       "Filter": null
[2026-05-18T18:21:44.238Z]     },
[2026-05-18T18:21:44.239Z]     {
[2026-05-18T18:21:44.240Z]       "ProviderName": "Azure.Functions.Cli.Diagnostics.ColoredConsoleLoggerProvider",
[2026-05-18T18:21:44.241Z]       "CategoryName": null,
[2026-05-18T18:21:44.241Z]       "LogLevel": null,
[2026-05-18T18:21:44.242Z]       "Filter": "<AddFilter>b__0"
[2026-05-18T18:21:44.243Z]     },
[2026-05-18T18:21:44.243Z]     {
[2026-05-18T18:21:44.244Z]       "ProviderName": null,
[2026-05-18T18:21:44.245Z]       "CategoryName": null,
[2026-05-18T18:21:44.245Z]       "LogLevel": null,
[2026-05-18T18:21:44.246Z]       "Filter": "<AddFilter>b__0"
[2026-05-18T18:21:44.247Z]     },
[2026-05-18T18:21:44.247Z]     {
[2026-05-18T18:21:44.248Z]       "ProviderName": null,
[2026-05-18T18:21:44.249Z]       "CategoryName": null,
[2026-05-18T18:21:44.249Z]       "LogLevel": null,
[2026-05-18T18:21:44.250Z]       "Filter": "<AddFilter>b__0"
[2026-05-18T18:21:44.251Z]     },
[2026-05-18T18:21:44.251Z]     {
[2026-05-18T18:21:44.252Z]       "ProviderName": null,
[2026-05-18T18:21:44.253Z]       "CategoryName": "Function",
[2026-05-18T18:21:44.254Z]       "LogLevel": "Information",
[2026-05-18T18:21:44.255Z]       "Filter": null
[2026-05-18T18:21:44.256Z]     },
[2026-05-18T18:21:44.257Z]     {
[2026-05-18T18:21:44.257Z]       "ProviderName": null,
[2026-05-18T18:21:44.258Z]       "CategoryName": null,
[2026-05-18T18:21:44.259Z]       "LogLevel": "Information",
[2026-05-18T18:21:44.259Z]       "Filter": null
[2026-05-18T18:21:44.260Z]     },
[2026-05-18T18:21:44.261Z]     {
[2026-05-18T18:21:44.262Z]       "ProviderName": "Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider",
[2026-05-18T18:21:44.262Z]       "CategoryName": null,
[2026-05-18T18:21:44.263Z]       "LogLevel": "None",
[2026-05-18T18:21:44.264Z]       "Filter": null
[2026-05-18T18:21:44.265Z]     },
[2026-05-18T18:21:44.265Z]     {
[2026-05-18T18:21:44.266Z]       "ProviderName": "Microsoft.Azure.WebJobs.Script.WebHost.Diagnostics.SystemLoggerProvider",
[2026-05-18T18:21:44.267Z]       "CategoryName": null,
[2026-05-18T18:21:44.267Z]       "LogLevel": null,
[2026-05-18T18:21:44.268Z]       "Filter": "<AddFilter>b__0"
[2026-05-18T18:21:44.269Z]     },
[2026-05-18T18:21:44.270Z]     {
[2026-05-18T18:21:44.271Z]       "ProviderName": "Azure.Functions.Cli.Diagnostics.ColoredConsoleLoggerProvider",
[2026-05-18T18:21:44.272Z]       "CategoryName": null,
[2026-05-18T18:21:44.272Z]       "LogLevel": null,
[2026-05-18T18:21:44.273Z]       "Filter": "<AddFilter>b__0"
[2026-05-18T18:21:44.274Z]     }
[2026-05-18T18:21:44.274Z]   ]
[2026-05-18T18:21:44.275Z] }
[2026-05-18T18:21:44.276Z] HttpWorkerOptions
[2026-05-18T18:21:44.277Z] {
[2026-05-18T18:21:44.278Z]   "Type": 0,
[2026-05-18T18:21:44.278Z]   "Description": null,
[2026-05-18T18:21:44.279Z]   "Arguments": null,
[2026-05-18T18:21:44.280Z]   "Port": 48089,
[2026-05-18T18:21:44.281Z]   "IsPortManuallySet": false,
[2026-05-18T18:21:44.281Z]   "EnableForwardingHttpRequest": false,
[2026-05-18T18:21:44.282Z]   "EnableProxyingHttpRequest": false,
[2026-05-18T18:21:44.283Z]   "InitializationTimeout": "00:00:30",
[2026-05-18T18:21:44.283Z]   "CustomRoutesEnabled": false,
[2026-05-18T18:21:44.284Z]   "Http": null
[2026-05-18T18:21:44.285Z] }
[2026-05-18T18:21:44.286Z] FunctionResultAggregatorOptions
[2026-05-18T18:21:44.287Z] {
[2026-05-18T18:21:44.288Z]   "BatchSize": 1000,
[2026-05-18T18:21:44.289Z]   "FlushTimeout": "00:00:30",
[2026-05-18T18:21:44.289Z]   "IsEnabled": true
[2026-05-18T18:21:44.290Z] }
[2026-05-18T18:21:44.291Z] ConcurrencyOptions
[2026-05-18T18:21:44.292Z] {
[2026-05-18T18:21:44.292Z]   "DynamicConcurrencyEnabled": false,
[2026-05-18T18:21:44.293Z]   "MaximumFunctionConcurrency": 500,
[2026-05-18T18:21:44.294Z]   "CPUThreshold": 0.8,
[2026-05-18T18:21:44.295Z]   "SnapshotPersistenceEnabled": true
[2026-05-18T18:21:44.295Z] }
[2026-05-18T18:21:44.296Z] QueuesOptions
[2026-05-18T18:21:44.297Z] {
[2026-05-18T18:21:44.297Z]   "BatchSize": 16,
[2026-05-18T18:21:44.298Z]   "NewBatchThreshold": 128,
[2026-05-18T18:21:44.299Z]   "MaxPollingInterval": "00:01:00",
[2026-05-18T18:21:44.299Z]   "MaxDequeueCount": 5,
[2026-05-18T18:21:44.300Z]   "VisibilityTimeout": "00:00:00",
[2026-05-18T18:21:44.301Z]   "MessageEncoding": "Base64"
[2026-05-18T18:21:44.301Z] }
[2026-05-18T18:21:44.302Z] SingletonOptions
[2026-05-18T18:21:44.304Z] {
[2026-05-18T18:21:44.305Z]   "LockPeriod": "00:00:15",
[2026-05-18T18:21:44.305Z]   "ListenerLockPeriod": "00:00:15",
[2026-05-18T18:21:44.306Z]   "LockAcquisitionTimeout": "10675199.02:48:05.4775807",
[2026-05-18T18:21:44.307Z]   "LockAcquisitionPollingInterval": "00:00:05",
[2026-05-18T18:21:44.308Z]   "ListenerLockRecoveryPollingInterval": "00:01:00"
[2026-05-18T18:21:44.309Z] }
[2026-05-18T18:21:44.310Z] TimerTriggerPlatformOptions
[2026-05-18T18:21:44.310Z] {
[2026-05-18T18:21:44.311Z]   "NonCronScheduleBehavior": 0
[2026-05-18T18:21:44.312Z] }
[2026-05-18T18:21:44.313Z] ScaleOptions
[2026-05-18T18:21:44.313Z] {
[2026-05-18T18:21:44.314Z]   "ScaleMetricsMaxAge": "00:02:00",
[2026-05-18T18:21:44.315Z]   "ScaleMetricsSampleInterval": "00:00:10",
[2026-05-18T18:21:44.316Z]   "MetricsPurgeEnabled": true,
[2026-05-18T18:21:44.316Z]   "IsTargetScalingEnabled": true,
[2026-05-18T18:21:44.317Z]   "IsRuntimeScalingEnabled": false
[2026-05-18T18:21:44.318Z] }
[2026-05-18T18:21:44.320Z] Starting JobHost
[2026-05-18T18:21:44.323Z] Starting Host (HostId=ravanatpp15-1027873518, InstanceId=f3fe0d41-2a7e-46dd-ac12-bda8948ac049, Version=4.1048.200.26180, ProcessId=25876, AppDomainId=1, InDebugMode=False, InDiagnosticMode=False, FunctionsExtensionVersion=(null))
[2026-05-18T18:21:44.343Z] Generating 0 job function(s)
[2026-05-18T18:21:44.358Z] No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. Azure Storage, ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers(), etc.).
[2026-05-18T18:21:44.364Z] HttpOptions
[2026-05-18T18:21:44.365Z] Initializing function HTTP routes
[2026-05-18T18:21:44.365Z] {
[2026-05-18T18:21:44.366Z] No HTTP routes mapped
[2026-05-18T18:21:44.368Z]
[2026-05-18T18:21:44.367Z]   "DynamicThrottlesEnabled": false,
[2026-05-18T18:21:44.370Z]   "EnableChunkedRequestBinding": false,
[2026-05-18T18:21:44.371Z]   "MaxConcurrentRequests": -1,
[2026-05-18T18:21:44.372Z]   "MaxOutstandingRequests": -1,
[2026-05-18T18:21:44.373Z]   "RoutePrefix": "api"
[2026-05-18T18:21:44.374Z] }
[2026-05-18T18:21:44.374Z] Host initialized (43ms)
[2026-05-18T18:21:44.377Z] Host started (51ms)
[2026-05-18T18:21:44.378Z] Job host started
[2026-05-18T18:21:44.381Z] The 'dafx-weekend-planner' function is in error: The binding type(s) 'entityTrigger, durableClient' are not registered. Please ensure the type is correct and the binding extension is installed.
[2026-05-18T18:21:44.382Z] The 'http-weekend-planner' function is in error: The binding type(s) 'durableClient' are not registered. Please ensure the type is correct and the binding extension is installed.
[2026-05-18T18:21:44.389Z] HttpBodyControlOptions
[2026-05-18T18:21:44.390Z] {
[2026-05-18T18:21:44.391Z]   "AllowSynchronousIO": false
[2026-05-18T18:21:44.391Z] }
[2026-05-18T18:21:44.392Z] HostHealthMonitorOptions
[2026-05-18T18:21:44.393Z] {
[2026-05-18T18:21:44.394Z]   "Enabled": true,
[2026-05-18T18:21:44.394Z]   "HealthCheckInterval": "00:00:10",
[2026-05-18T18:21:44.395Z]   "HealthCheckWindow": "00:02:00",
[2026-05-18T18:21:44.396Z]   "CounterThreshold": 0.8
[2026-05-18T18:21:44.397Z] }
[2026-05-18T18:21:44.397Z] WorkerConfigurationResolverOptions
[2026-05-18T18:21:44.398Z] {
[2026-05-18T18:21:44.399Z]   "ReleaseChannel": null,
[2026-05-18T18:21:44.400Z]   "WorkerRuntime": "dotnet-isolated",
[2026-05-18T18:21:44.400Z]   "IsPlaceholderModeEnabled": false,
[2026-05-18T18:21:44.401Z]   "IsMultiLanguageWorkerEnvironment": false,
For detailed output, run func with --verbose flag.
[2026-05-18T18:21:44.402Z]   "ProbingPaths": null,
[2026-05-18T18:21:44.404Z]   "WorkersAvailableForResolution": [],
[2026-05-18T18:21:44.405Z]   "WorkerDescriptionOverrides": {},
[2026-05-18T18:21:44.405Z]   "IgnoredWorkerVersions": null,
[2026-05-18T18:21:44.406Z]   "IsDynamicWorkerResolutionEnabled": false,
[2026-05-18T18:21:44.407Z]   "WorkersRootDirPath": "C:\\Users\\Jaliya\\AppData\\Local\\AzureFunctionsTools\\Releases\\4.126.0\\cli_x64\\workers",
[2026-05-18T18:21:44.408Z]   "EffectiveCoresCount": 16,
[2026-05-18T18:21:44.408Z]   "WorkerProcessCount": null,
[2026-05-18T18:21:44.409Z]   "FunctionsWorkerRuntimeVersion": null
[2026-05-18T18:21:44.410Z] }
[2026-05-18T18:21:44.410Z] WorkerConfigurationResolverOptions
[2026-05-18T18:21:44.411Z] {
[2026-05-18T18:21:44.412Z]   "ReleaseChannel": null,
[2026-05-18T18:21:44.412Z]   "WorkerRuntime": "dotnet-isolated",
[2026-05-18T18:21:44.413Z]   "IsPlaceholderModeEnabled": false,
[2026-05-18T18:21:44.414Z]   "IsMultiLanguageWorkerEnvironment": false,
[2026-05-18T18:21:44.415Z]   "ProbingPaths": null,
[2026-05-18T18:21:44.416Z]   "WorkersAvailableForResolution": [],
[2026-05-18T18:21:44.417Z]   "WorkerDescriptionOverrides": {
[2026-05-18T18:21:44.417Z]     "dotnet-isolated": {
[2026-05-18T18:21:44.418Z]       "Language": null,
[2026-05-18T18:21:44.419Z]       "DefaultRuntimeName": null,
[2026-05-18T18:21:44.420Z]       "DefaultRuntimeVersion": null,
[2026-05-18T18:21:44.421Z]       "SupportedArchitectures": null,
[2026-05-18T18:21:44.422Z]       "SupportedOperatingSystems": null,
[2026-05-18T18:21:44.422Z]       "SupportedRuntimeVersions": null,
[2026-05-18T18:21:44.423Z]       "SanitizeRuntimeVersionRegex": null,
[2026-05-18T18:21:44.424Z]       "WorkerIndexing": null,
[2026-05-18T18:21:44.425Z]       "Extensions": [],
[2026-05-18T18:21:44.426Z]       "UseStdErrorStreamForErrorsOnly": false,
[2026-05-18T18:21:44.427Z]       "DefaultExecutablePath": "dotnet",
[2026-05-18T18:21:44.427Z]       "ExecutableWorkingDirectory": null,
[2026-05-18T18:21:44.428Z]       "DefaultWorkerPath": null,
[2026-05-18T18:21:44.429Z]       "WorkerDirectory": "C:\\Users\\Jaliya\\Desktop\\maf-samples\\dotnet\\samples\\03-durable-functions\\bin\\Debug\\net10.0",
[2026-05-18T18:21:44.430Z]       "Arguments": null,
[2026-05-18T18:21:44.430Z]       "WorkerArguments": null,
[2026-05-18T18:21:44.431Z]       "IsDisabled": null
[2026-05-18T18:21:44.432Z]     }
[2026-05-18T18:21:44.433Z]   },
[2026-05-18T18:21:44.434Z]   "IgnoredWorkerVersions": null,
[2026-05-18T18:21:44.435Z]   "IsDynamicWorkerResolutionEnabled": false,
[2026-05-18T18:21:44.436Z]   "WorkersRootDirPath": "C:\\Users\\Jaliya\\AppData\\Local\\AzureFunctionsTools\\Releases\\4.126.0\\cli_x64\\workers",
[2026-05-18T18:21:44.437Z]   "EffectiveCoresCount": 16,
[2026-05-18T18:21:44.438Z]   "WorkerProcessCount": null,
[2026-05-18T18:21:44.439Z]   "FunctionsWorkerRuntimeVersion": null
[2026-05-18T18:21:44.440Z] }
[2026-05-18T18:21:44.440Z] LanguageWorkerOptions
[2026-05-18T18:21:44.441Z] {
[2026-05-18T18:21:44.442Z]   "WorkerConfigs": [
[2026-05-18T18:21:44.443Z]     {
[2026-05-18T18:21:44.444Z]       "Description": {
[2026-05-18T18:21:44.444Z]         "Language": "dotnet-isolated",
[2026-05-18T18:21:44.445Z]         "DefaultRuntimeName": null,
[2026-05-18T18:21:44.446Z]         "DefaultRuntimeVersion": null,
[2026-05-18T18:21:44.446Z]         "SupportedArchitectures": null,
[2026-05-18T18:21:44.447Z]         "SupportedOperatingSystems": null,
[2026-05-18T18:21:44.448Z]         "SupportedRuntimeVersions": null,
[2026-05-18T18:21:44.449Z]         "SanitizeRuntimeVersionRegex": null,
[2026-05-18T18:21:44.450Z]         "WorkerIndexing": "true",
[2026-05-18T18:21:44.451Z]         "Extensions": [
[2026-05-18T18:21:44.451Z]           ".dll"
[2026-05-18T18:21:44.452Z]         ],
[2026-05-18T18:21:44.453Z]         "UseStdErrorStreamForErrorsOnly": false,
[2026-05-18T18:21:44.454Z]         "DefaultExecutablePath": "C:\\Program Files\\dotnet\\dotnet.exe",
[2026-05-18T18:21:44.455Z]         "ExecutableWorkingDirectory": null,
[2026-05-18T18:21:44.455Z]         "DefaultWorkerPath": "C:\\Users\\Jaliya\\Desktop\\maf-samples\\dotnet\\samples\\03-durable-functions\\bin\\Debug\\net10.0\\DurableFunctions.dll",
[2026-05-18T18:21:44.456Z]         "WorkerDirectory": "C:\\Users\\Jaliya\\Desktop\\maf-samples\\dotnet\\samples\\03-durable-functions\\bin\\Debug\\net10.0",
[2026-05-18T18:21:44.457Z]         "Arguments": [],
[2026-05-18T18:21:44.458Z]         "WorkerArguments": null,
[2026-05-18T18:21:44.458Z]         "IsDisabled": null
[2026-05-18T18:21:44.459Z]       },
[2026-05-18T18:21:44.460Z]       "Arguments": {
[2026-05-18T18:21:44.460Z]         "ExecutablePath": "C:\\Program Files\\dotnet\\dotnet.exe",
[2026-05-18T18:21:44.461Z]         "ExecutableArguments": [],
[2026-05-18T18:21:44.462Z]         "WorkerPath": "C:\\Users\\Jaliya\\Desktop\\maf-samples\\dotnet\\samples\\03-durable-functions\\bin\\Debug\\net10.0\\DurableFunctions.dll",
[2026-05-18T18:21:44.463Z]         "WorkerArguments": []
[2026-05-18T18:21:44.463Z]       },
[2026-05-18T18:21:44.464Z]       "CountOptions": {
[2026-05-18T18:21:44.465Z]         "SetProcessCountToNumberOfCpuCores": false,
[2026-05-18T18:21:44.466Z]         "ProcessCount": 1,
[2026-05-18T18:21:44.467Z]         "MaxProcessCount": 10,
[2026-05-18T18:21:44.468Z]         "ProcessStartupInterval": "00:00:10",
[2026-05-18T18:21:44.468Z]         "ProcessStartupTimeout": "00:01:00",
[2026-05-18T18:21:44.469Z]         "InitializationTimeout": "00:00:10",
[2026-05-18T18:21:44.471Z]         "EnvironmentReloadTimeout": "00:00:30",
[2026-05-18T18:21:44.471Z]         "ProcessRestartInterval": "00:00:10",
[2026-05-18T18:21:44.472Z]         "ProcessShutdownTimeout": "00:00:10"
[2026-05-18T18:21:44.473Z]       }
[2026-05-18T18:21:44.474Z]     }
[2026-05-18T18:21:44.475Z]   ]
[2026-05-18T18:21:44.475Z] }

Steps to reproduce:

  1. Create an Azure Functions (.NET isolated, v4) project.
  2. Add Microsoft.Agents.AI.Hosting.AzureFunctions.
  3. Configure an agent with FunctionsApplication.CreateBuilder(args).ConfigureFunctionsWebApplication().ConfigureDurableAgents(o => o.AddAIAgent(agent)).
  4. Run the host without declaring any [OrchestrationTrigger] function in the project.
  5. Observe that the host does not expose the agent endpoint.
  6. Add an empty [OrchestrationTrigger] function — endpoint works.

This is most likely caused by the Functions worker source generator only scanning the user's assembly for triggers (a known limitation of the .NET isolated worker SDK).

It's a small papercut, but it's the first thing every user of this package hits, and the fix isn't obvious, the error doesn't point at "you need an orchestrator." Worth documenting at minimum, and ideally removing.

Code Sample

Minimal repro: this fails without the DummyOrchestrator at the bottom:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
    <_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
  </PropertyGroup>

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Azure.AI.Projects" Version="2.1.0-beta.2" />
    <PackageReference Include="Azure.Identity" Version="1.21.0" />
    <PackageReference Include="Microsoft.Agents.AI.Foundry" Version="1.6.1-preview.260514.1" />
    <PackageReference Include="Microsoft.Agents.AI.Hosting.AzureFunctions" Version="1.6.1-preview.260514.1" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="2.52.0" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="2.0.7" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="2.1.0" />
  </ItemGroup>

  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>

</Project>
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Hosting.AzureFunctions;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Builder;
using Microsoft.DurableTask;
using Microsoft.Extensions.Hosting;

var endpoint = Environment.GetEnvironmentVariable("AZURE_AI_ENDPOINT")!;
var deploymentName = Environment.GetEnvironmentVariable("AZURE_AI_MODEL")!;

AIAgent agent = new AIProjectClient(new Uri(endpoint), new AzureCliCredential())
    .AsAIAgent(
        model: deploymentName,
        name: "weekend-planner",
        instructions: "You help users plan their weekends.");

using IHost app = FunctionsApplication
    .CreateBuilder(args)
    .ConfigureFunctionsWebApplication()
    .ConfigureDurableAgents(options => 
        options.AddAIAgent(agent))
    .Build();

app.Run();

// Without this, the agent HTTP endpoint is never exposed.
public static class DummyOrchestrator
{
    [Function(nameof(DummyOrchestrator))]
    public static Task RunOrchestrator(
        [OrchestrationTrigger] TaskOrchestrationContext context)
        => Task.CompletedTask;
}

Package Versions

  • Microsoft.Agents.AI.Foundry: 1.6.1-preview.260514.1
  • Microsoft.Agents.AI.Hosting.AzureFunctions: 1.6.1-preview.260514.1
  • Microsoft.Azure.Functions.Worker: 2.52.0
  • Microsoft.Azure.Functions.Worker.Sdk: 2.0.7
  • Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore: 2.1.0

.NET Version

.NET 10

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions