You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 隔离模式Azure Function异常停止且消失问题排查

Azure Functions 突然停止运行且仪表板不显示的排查方案

针对你遇到的TimerTrigger类型隔离模式函数突然停止、重启后从仪表板消失,且日志提示No job functions found的问题,以下是具体排查和解决步骤:

1. 确认函数类的访问修饰符

日志明确提示需确保作业类和方法为公开(public),检查ReservationConfirmation所在的类是否标记为public。若类为internal或默认私有修饰符,函数运行时将无法扫描到该作业:

// 确保类是public
public class ReservationConfirmationFunction
{
    [Function(nameof(ReservationConfirmation))]
    public async Task RunAsync([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer)
    {
        // ...
    }
}

2. 清理生产环境部署缓存

Azure Functions偶尔会出现部署缓存异常,导致函数无法被正确识别:

  • 进入函数应用的高级工具(Kudu),打开Debug console -> CMD,删除site/wwwroot目录下所有文件后重新部署代码。
  • 或在Azure门户函数应用页面,进入配置 -> 常规设置,点击重启按钮强制刷新运行时缓存。

3. 验证依赖包兼容性与部署一致性

尽管测试环境配置正常,生产环境仍可能存在依赖加载异常:

  • 检查生产环境函数应用与测试环境的.NET运行时版本是否一致(在配置 -> 常规设置中查看.NET 隔离模式版本)。
  • 尝试回退到一周前更新前的依赖包版本,或升级至最新兼容版本(确保Microsoft.Azure.Functions.Worker与Microsoft.Azure.Functions.Worker.Sdk版本匹配)。示例调整:
    <ItemGroup>
        <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.24.0"/>
        <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Timer" Version="4.3.2" />
        <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.18.0"/>
        <!-- 其他依赖保持原配置 -->
    </ItemGroup>
    

4. 检查Program.cs的扩展注册完整性

虽然ConfigureFunctionsWorkerDefaults()已包含Timer扩展注册,但可尝试显式添加注册,确保运行时正确识别绑定:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults(builder =>
    {
        // 显式注册Timer扩展
        builder.AddTimers();
    })
    .ConfigureServices(services =>
    {
        services.AddApplicationInsightsTelemetryWorkerService();
        services.ConfigureFunctionsApplicationInsights();

        services.Configure<LoggerFilterOptions>(options =>
        {
            var toRemove = options.Rules.FirstOrDefault(rule => rule.ProviderName == "Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider");

            if (toRemove is not null)
            {
                options.Rules.Remove(toRemove);
            }
        });
    })
    .Build();

await host.RunAsync();

5. 查看详细运行时日志

通过以下方式定位根本原因:

  • 在Azure门户函数应用页面,进入监控 -> 日志流,实时查看运行时加载日志,排查是否存在程序集加载失败、依赖缺失等错误。
  • 查看Application Insights的Exception表,搜索与函数加载相关的异常记录。

内容的提问来源于stack exchange,提问作者Scryper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:02:20