如何防止 Set header 策略在入站后执行?

How to prevent Set header policy from executing after inbound?

我正在构建一个通过 Azure API 管理公开的 Azure Function 应用程序。在被 API 管理重定向之前,我们需要知道 URL 的路径。我们目前正在通过使用入站策略在 header 中设置原始 URL 来做到这一点,如下所示:

<policies>
<inbound>
    <base />
    <set-backend-service id="apim-generated-policy" backend-id="myfunctionapp" />
    <set-header name="x-original-url" exists-action="append">
        <value>@(context.Request.OriginalUrl.Path.ToString())</value>
    </set-header>
</inbound>
<backend>
    <base />
</backend>
<outbound>
    <base />
</outbound>
<on-error>
    <base />
</on-error>
</policies>

在 API 管理中测试 API 时,我可以看到 header 设置正确,但在我的函数应用程序的日志中,header值在重定向后被请求 URL 覆盖(即 /api/endpoint 而不是 /api-manager/endpoint)。

我猜政策在移交给功能应用程序后再次执行,但我似乎无法弄清楚原因。有没有人有这样做的经验或有更好的解决方案将原始 URL 发送到功能应用程序以便记录?

贾斯汀马修有权这样做。将 header 名称更改为其他名称可以解决此问题。管道中的其他东西一定一直在尝试利用相同的 header 值。