升级Microsoft.Azure.Functions.Worker.Sdk至1.16.0+出现无作业函数警告如何修复?
解决Azure Functions独立进程模式升级Worker.Sdk 1.16.0+后无作业函数的问题
核心原因
从1.16.0版本开始,Microsoft.Azure.Functions.Worker.Sdk对独立进程模式的函数注册逻辑做了调整,旧模板的代码结构不再适配新SDK的要求。
修改步骤
1. 更新项目文件(.csproj)
确保项目文件中包含以下配置,明确指定函数入口程序集及依赖版本:
<PropertyGroup> <TargetFramework>net6.0</TargetFramework> <AzureFunctionsVersion>v4</AzureFunctionsVersion> <OutputType>Exe</OutputType> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <!-- 新增:指定函数所在程序集,让SDK能正确识别 --> <FunctionsWorkerAssembly>$(AssemblyName)</FunctionsWorkerAssembly> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.20.0" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.16.4" /> <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.1.0" /> </ItemGroup>
2. 调整Program.cs启动逻辑
显式配置函数主机并添加HTTP扩展支持:
using Microsoft.Azure.Functions.Worker; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var host = new HostBuilder() .ConfigureFunctionsWorkerDefaults() .ConfigureServices(services => { services.AddHttpClient(); services.AddHttpContextAccessor(); }) .Build(); host.Run();
3. 确认函数类和方法的访问修饰符
保证HTTP触发函数的类和方法均为public,示例如下:
using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Http; using Microsoft.Extensions.Logging; public class HttpTriggerFunction { private readonly ILogger<HttpTriggerFunction> _logger; public HttpTriggerFunction(ILogger<HttpTriggerFunction> logger) { _logger = logger; } [Function("HttpTrigger")] public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequestData req) { _logger.LogInformation("C# HTTP trigger function processed a request."); var response = req.CreateResponse(System.Net.HttpStatusCode.OK); response.Headers.Add("Content-Type", "text/plain; charset=utf-8"); response.WriteString("Welcome to Azure Functions!"); return response; } }
4. 清理并重新构建项目
执行以下命令确保依赖和构建输出为最新状态:
dotnet clean dotnet restore dotnet build
验证
启动函数应用后,访问HTTP触发端点确认API正常响应,同时检查控制台输出,No job functions found警告应不再出现。
内容的提问来源于stack exchange,提问作者kumkee
相关产品推荐
相关产品推荐

