首页 > 解决方案 > Azure REST API“listsecrets”为具有自定义路由的函数返回不正确的触发 URL

问题描述

使用 Azure REST API 检索函数应用程序中特定函数的listsecrets触发器 URL 时,如果定义了自定义函数,终结点会返回不正确的触发器 URL route

例如,采用一个名为Health-

[FunctionName(nameof(Health))]
public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get")] ExecutionContext context)
{
    {{ Stuff is done here }}
}

也采用相同的基本功能,但添加自定义路由(澄清 - 我没有两个名称相同但路由不同的功能,这是我稍后决定添加自定义路由的相同功能) -

[FunctionName(nameof(Health))]
public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", Route = "prefix/health")] ExecutionContext context)
{
    {{ Stuff is done here }}
}

如果您要使用文档listsecrets中描述的端点和上述任一示例,则会返回完全相同的触发 URL -

{
    "key": "S0m3K3y==",
    "trigger_url": "https://my-function-app.azurewebsites.net/api/Health?code=S0m3K3y=="
}

Azure 门户中提供的 URL 包含自定义路由,因此必须有获取它的方法。有人知道怎么做吗?无论哪种方式,在包含错误触发 URLtrigger_url的端点上包含一个属性似乎完全没有意义。listsecrets

标签: azure-functionsazure-rest-api

解决方案


我目前的技巧是向 Azure REST API 发出两个请求。但是,我很想知道是否有一种正确的方法可以在一个请求中检索触发 URL/密钥。

第一个是到同一个listsecrets端点,尽管在这种情况下我只占用了该key属性。

发布https://management.azure.com/subscriptions/ {subscriptionId}/resourceGroups/{resourceGroupName} /providers/Microsoft.Web/sites/ {name}/functions/{functionName}/listsecrets?api-version=2019-08 -01

第二个是自定义路由的功能。函数的properties包含属性invoke_url_template,它具有正确的 URL(少了键,因此我仍然需要原始请求listsecrets)。

获取https://management.azure.com/subscriptions/ {subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}?api-version=2019-08-01


推荐阅读