无法使用托管标识从 Azure API post 向 Azure 服务总线队列发送消息

Unable to post message to Azure Service Bus Queue from Azure API using Managed Identity

我正在尝试通过 azure“使用托管标识访问服务总线进行身份验证”及其在 github:

上测试示例代码

Azure API Management Policy Snippets

我所做的步骤如下:

  1. 创建了 Azure API 管理服务。在此我添加了一个 API 它有一个 POST 方法
  2. 我还为此 APIM
  3. 启用了系统生成的托管身份
  4. 我创建了一个服务总线并创建了一个队列
  5. 我将托管标识添加到队列中的“Azure 服务总线数据发送者”角色。
  6. 最后,我修改了 azure 中的代码以使用我在上面创建的对象的名称,如下所示:

运行 API 测试时出现错误:“500 内部服务器错误”。消息当然没有被发送。知道我在这里做错了什么吗?帮助表示赞赏。

您的授权 header 和调用 URL 似乎有问题。所有其他步骤看起来都不错。

请在下面找到我这边工作正常的政策代码片段。我能够成功地将数据发送到服务总线。我的操作端点是带有 POST 方法的 '/messages'。

我发现这个问题几乎就是@pankaj 所建议的。 我在创建的 api 上创建 POST 操作时出错了。当我们在 azure apim 中添加一个 api 的操作时,它也会请求一个 URL ,如下所示: [![Azure API - 添加操作][1]

问题是我添加了一个随机文本,例如“/message”。 它所做的是,它将此路径添加到 set-backend-service base-url

由于修改后的后端 url 不正确,所以错误的原因也是如此。我将其更新为 POST 操作路径中的一个“/”,错误得到解决。

当我的请求有一些查询参数时,我又遇到了这个问题。它再次将这些查询参数附加到后端 url。为了解决这个问题,我在下面添加了:

<set-query-parameter name="{{replace-with-query-param}}" exists-action="delete" />

谢谢大家的帮助。希望这个 post 会对其他人有所帮助 [1]: https://i.stack.imgur.com/Rechc.jpg