Azure Functions v3部署后提示'No job functions found'且无法运行、日志无输出问题求助
解决Azure Function v3部署后"No job functions found"及日志无输出问题
我太懂这种排查了所有可能性还是卡壳的挫败感了,咱们聚焦你遇到的两个核心问题:Azure Function识别不到作业函数,以及Log Analytics没有日志输出,一步步来拆解解决:
一、先搞定核心错误:"No job functions found"
这个提示本质是Azure Functions运行时找不到可执行的函数逻辑,优先检查这几个点:
- 再确认函数类和方法的访问权限
虽然你代码里的TestEventTrigger类和Run方法已经标记为public,但还是要确保项目编译时没有意外修改访问级别——比如检查项目文件是否有奇怪的编译配置,或者类库的输出类型是否是类库(不是控制台应用),这是v3版本Function的基本要求。 - 检查部署包的正确性
用az functionapp deployment source config-zip部署时,必须打包编译后的发布目录,而不是源码目录。你可以本地先执行:
然后进入dotnet publish -c Releasebin/Release/netcoreapp3.1/publish目录,把里面所有内容打包成zip,再用CLI命令部署。如果直接打包源码,Azure找不到编译后的dll,自然识别不到函数。 - 验证Azure运行时版本匹配
登录Azure门户,进入你的Function App,在配置 > 常规设置里,确认运行时版本是.NET Core 3.1。如果选成了更高版本或者.NET Framework,会导致v3的函数无法被加载。
二、解决Log Analytics无日志的问题
这个问题大概率是函数还没被正确加载导致的,但也可以提前排查这些配置点:
- 确认环境变量已在Azure配置
你在Startup里用了AddEnvironmentVariables()读取Serilog的配置,所以要确保SerilogWorkspaceId、SerilogAuthId、SerilogName这些变量已经添加到Function App的配置 > 应用程序设置里,并且值完全正确。 - 检查Serilog的日志级别过滤
你代码里设置了AzureAnalytics的日志级别由SerilogLoggingLevel决定,如果这个变量设为Error或Warning,那Run方法里的Log.Debug日志会被过滤掉。可以临时把logLevel改成LogEventLevel.Debug,或者把Log.Debug换成Log.Information测试是否有日志输出。 - 确认Log Analytics表的命名规则
Log Analytics会给自定义日志表自动加上_CL后缀,所以你在代码里设置的SerilogName,实际在Log Analytics里的表名是{SerilogName}_CL,可以搜索这个表名看看有没有数据。
额外的调试小技巧
- 打开Azure门户的Function App,进入平台功能 > 高级工具(Kudu),到
site/wwwroot目录下:- 确认你的项目dll存在于
bin目录; - 找到
TestEvent目录下的function.json,检查scriptFile是否指向正确的dll,entryPoint是否是TestFunction.TestEventTrigger.Run。
- 确认你的项目dll存在于
- 查看Function App的日志流,实时查看启动和运行日志,这里会有更详细的错误信息,比单纯的提示更能定位问题。
内容的提问来源于stack exchange,提问作者Robbie C
相关产品推荐
相关产品推荐

