无法使用 Microsoft 示例在 Azure APIM 中生成 SAS

Not able to generate SAS in Azure APIM using Microsoft sample

是否有人按照以下示例成功地为 Azure APIM 中的 Blob 存储生成了 SAS?

https://docs.microsoft.com/en-us/azure/api-management/policies/generate-shared-access-signature

已替换门户中的存储访问密钥(使用密钥 1 和密钥 2),但得到相同的结果。也尝试生成新密钥,但也没有用。

"Expression evaluation failed. The given key was not present in the dictionary.\r\n at System.Collections.Generic.Dictionary`2.get_Item(TKey key)", "The given key was not present in the dictionary."

让像我这样的 azure-apim 初学者更加困惑的是 <set-variable name="resourcePath" value="TableName()" />,TableName() 是做什么的?

此示例为 Azure 存储帐户中的 table 生成 SAS 令牌。您可以将其修改为您要访问的资源,如下所示:

<set-variable name="resourcePath" value="containername/blobname" />

别忘了更改 rewrite-uri 块。

感谢所有试图提供帮助的人:Anton 和 Doris。

失败的操作是这个块:

<set-variable name="StringToSign" value="@{
            return string.Format(
            "GET\n\n\n\n\n{0}\n\n\n\n\n\n\n{1}\n{2}\n{3}",
            (string)context.Variables["Content-Type"],
            (string)context.Variables["x-ms-date"],
            (string)context.Variables["x-ms-version"],
            (string)context.Variables["CanonicalizedResource"]);
        }" />

但是,在示例的开头,当设置上下文变量时,x-ms-version 丢失了。我添加了操作 <set-variable name="x-ms-version" value="2020-02-10" />,现在正在生成 SAS。

也许它会对其他想使用 azure 的人有所帮助 :)