基于TimerTrigger的Azure Function启动报错:System.Text.Json无JSON令牌
针对你遇到的TimerTrigger函数启动时出现System.Text.Json: The input does not contain any JSON tokens错误,可尝试以下解决方案:
检查本地Azure存储模拟器状态
TimerTrigger依赖AzureWebJobsStorage存储作业运行状态,若本地存储模拟器未启动或运行异常,会导致状态读取失败触发解析错误。需确保模拟器处于运行状态,可通过Windows开始菜单启动「Microsoft Azure Storage Emulator」,或重启模拟器。清理存储中的Timer状态数据
存储模拟器内的旧Timer状态数据可能已损坏,导致Runtime解析失败。可通过Azure Storage Explorer连接本地存储,找到azure-webjobs-hosts容器,删除其中与该Timer函数相关的Blob文件,或直接清空整个容器。核对NuGet包版本兼容性
确认项目中Microsoft.Azure.WebJobs.Extensions和Microsoft.NET.Sdk.Functions包版本与FUNCTIONS_WORKER_RUNTIME指定的.NET版本匹配。建议将相关包更新至最新稳定版,避免版本不兼容导致的内部解析异常。重新生成local.settings.json
即使配置内容看似正常,也可能存在隐形格式问题(如不可见字符)。可删除现有文件,手动重新输入配置内容:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet" } }
原因说明
TimerTrigger函数运行时需要存储作业的执行状态(如上次触发时间),Function Runtime内部会使用System.Text.Json解析存储中的状态数据。当存储连接异常、状态数据损坏时,就会触发该JSON解析错误,这与你的业务代码是否直接使用System.Text.Json无关。
内容的提问来源于stack exchange,提问作者YIZ

