An Azure service that provides an event-driven serverless compute platform.
Hi @Brijeshkumar Patel ,
You built a queue-triggered app on the Azure Functions isolated worker model (Microsoft.Azure.Functions.Worker, .NET 10), deployed it as a continuous WebJob under App_Data\jobs\continuous\<JobName>\ on a Windows Web App, and the process exits at startup with Configuration is missing the 'HostEndpoint' information. The exception is the expected outcome of that deployment, not a configuration gap you can close with a setting. The worker is a client process; it only does work when the Azure Functions host starts it and connects to it, and the WebJobs runner does not start a Functions host. No Learn page describes a supported way to run the isolated worker, or the Functions host, as a WebJob.
What the exception is telling you
In the isolated model, the executable you publish is not the Functions runtime. It is a gRPC client that the Functions host launches and then connects to. The value behind Functions:Worker:HostEndpoint is the gRPC address of that host. The worker would accept it from any configuration source (environment variables and command-line arguments are both registered), but in normal operation the host passes it on the command line as --functions-uri, together with --functions-request-id, --functions-worker-id, and --functions-grpc-max-message-length. The worker maps these switches to the Functions:Worker:* configuration keys in WorkerHostBuilderExtensions.RegisterCommandLine, and GrpcServiceCollectionExtensions.GetFunctionsHostGrpcUri throws exactly your exception when the key is absent.
Judging from your stack trace, DataSync.ContinuousWebJob.exe was started without those switches, which is what a WebJob deployment does unless a run script adds them, so the key is absent. Setting it yourself, for example as the app setting Functions__Worker__HostEndpoint, would only move the failure: there is no host listening at any address you could name, and nothing that would deliver a queue message to the worker. The 60-second restart loop is the documented PendingRestart state of a continuous WebJob that exits within two minutes of starting (WebJob statuses).
This is also why your second attempt did not change anything. Moving the payload from the WebJob folder to wwwroot puts the files where a Function App would expect them, but the identical crash shows that nothing on the Web App picked them up as a Functions payload; the Functions host is what a Function App resource provides, and only it launches the worker with those arguments.
The documented deployment target
The guide for the isolated worker model describes the deployment payload as the dotnet publish output, including functions.metadata, worker.config.json, extensions.json, and the .azurefunctions/ folder. These files are read by the Functions host, not by your executable; they are the host side of the contract. The same page lists deployment to Azure Functions only. No Learn page states the WebJob case as a failure mode, which matches your observation; the closest statements are the payload section and the comparison page below.
Since your other WebJobs already run on an App Service plan, the smallest change is to create a Function App resource in that same plan. The Dedicated plan documentation confirms that function apps run on the same App Service plan as web apps, billed with the plan rather than per execution. Deploy the existing publish output there, set FUNCTIONS_WORKER_RUNTIME to dotnet-isolated and netFrameworkVersion to your .NET version (the Windows settings listed under Deployment requirements), and enable Always On so the host does not idle between queue messages. Your queue functions and Program.cs need no changes for this move.
If the requirement is to stay on the Web App
The App Service feature that runs a background console process next to a web app is WebJobs with the WebJobs SDK, which your original code already used. The comparison page describes the WebJobs SDK as a console application that runs anywhere console applications run, and the WebJobs SDK tutorial (updated March 2026) still covers queue-triggered functions with Microsoft.Azure.WebJobs.Extensions 4.x and Microsoft.Azure.WebJobs.Extensions.Storage 5.x, verified there against .NET 8. Neither page carries a retirement notice for the WebJobs SDK. If the motivation for the switch was something other than the Functions host, keeping the WebJobs SDK project is the supported way to remain on a plain App Service. The Microsoft.Azure.WebJobs package (3.0.47 at the time of writing) targets .NET Standard 2.0, and NuGet lists net10.0 among the compatible frameworks, so the .NET 10 target itself is not the obstacle; the tutorial is verified against .NET 8 only, so the behavior of the complete package graph on .NET 10 is something to confirm in your own build.
References
- WorkerHostBuilderExtensions.cs (Azure/azure-functions-dotnet-worker)
- GrpcServiceCollectionExtensions.cs (Azure/azure-functions-dotnet-worker)
- Guide for running C# Azure Functions in the isolated worker model
- Dedicated hosting plans for Azure Functions
- Run background tasks with WebJobs
- Choose the right integration and automation services in Azure
- Tutorial: Get started with the Azure WebJobs SDK for event-driven background processing
- Microsoft.Azure.WebJobs on NuGet
Drafted with help from Claude, disclosed per the Q&A AI usage policy. All technical claims checked against the Azure Functions .NET worker source on GitHub, the NuGet package page, and the Microsoft Learn pages listed above.