Azure Functions新增函数返回401错误求助
路由配置冲突或未生效
不管是本地调试还是云端部署,若新增函数的HTTP触发器路由未正确定义,或是和第一个函数的路由模板存在匹配优先级问题,都会导致请求被错误转发到第一个函数。比如第一个函数使用默认路由api/{functionName},而新增函数的路由配置重复或未明确指定唯一路径,本地调试时host的路由匹配规则就会优先命中第一个函数,引发错误;云端部署后,新增函数的路由未正确注册,请求无法找到对应函数,再加上默认认证拦截,就会返回401。部署包未完整同步
部署时如果只上传了单个函数的代码,或是打包过程中遗漏了新增函数的配置文件(比如function.json)、代码文件,会导致云端仅存在第一个函数的有效配置。即便本地修改了AuthLevel=Anonymous,新增函数的配置未同步到Azure,云端仍会沿用默认的认证规则(比如Function级别),从而返回401。全局认证设置覆盖单个函数配置
如果Azure函数应用开启了Easy Auth(即App Service Authentication),即便单个函数设置了AuthLevel=Anonymous,全局的认证规则会优先生效,所有未通过全局认证的请求都会被拦截返回401,这种情况下单独调整函数的AuthLevel不会起作用。本地调试环境的host.json配置问题
本地运行时,host.json中的extensions.http配置项(比如routePrefix)可能导致所有请求被统一路由到第一个函数。比如将routePrefix设为空或者和第一个函数的路由重合,就会出现请求新增函数却触发第一个函数执行的情况。
内容的提问来源于stack exchange,提问作者arturgomesc

