Azure functions Azure函数仅使用PUT方法获取401错误
我最近开始在许多Azure HTTP函数上出现Azure functions Azure函数仅使用PUT方法获取401错误,azure-functions,swagger,azure-api-management,bearer-token,Azure Functions,Swagger,Azure Api Management,Bearer Token,我最近开始在许多Azure HTTP函数上出现401个未经授权的错误,但仅使用HTTP PUT方法。这些函数是通过Azure API管理(APIM)使用Swagger 3开放API提供的,我们有一个使用函数过滤器的自定义中间件,它为我们提供了一个类似于[Authorize]的属性来验证我们的承载令牌 在主机文件中,我们删除了/api/路由前缀 { ... "extensions": { "http": { "route
401个未经授权的错误,但仅使用HTTP PUT方法。这些函数是通过Azure API管理(APIM)使用Swagger 3开放API提供的,我们有一个使用函数过滤器的自定义中间件,它为我们提供了一个类似于[Authorize]
的属性来验证我们的承载令牌
在主机文件中,我们删除了/api/
路由前缀
{
...
"extensions": {
"http": {
"routePrefix": ""
}
}
}
因此,我们的API是简单的路由,比如GET/PUT/preferences
。所有其他API都工作正常,它们在APIM上进行验证,并传递到后端API,在后端API中验证承载令牌并成功执行函数。但是,所有HTTP PUT函数永远不会到达我们的后端,因为它们似乎被函数主机截获,并且返回一个HTTP 401,其中包含以下标头,WWW Authenticate:Bearer error=“invalid\u token”,error\u description=“未找到签名密钥”
有趣的是,如果我们将路由更改为更复杂的路由,例如/preference/something
,那么它可以工作(耸耸肩),并且我在日志中通过附加日志验证了这些PUT方法永远不会到达我们的任何代码
如果微软能提供一些关于为什么会发生这种情况的指导,那将是非常好的,或者如果其他任何人都经历过这种奇怪的现象,那么我很想听听你们的经验和可能的解决方案