繁体   English   中英

无法以编程方式添加/更新 Azure Function 密钥

[英]Unable to programmatically add/update Azure Function Key

尝试以编程方式添加/更新 function 密钥时,我收到以下错误:

StatusCode:401,ReasonPhrase:“未经授权”

代码:

执行以下代码会导致上述错误。

static void FunctionKey(string resourceGroupName, string functionAppName, string functionName, NameValuePair kv)
{
    var resource = $"subscriptions/{SubscriptionId.Value}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{functionAppName}/functions/{functionName}/keys/{kv.Name}?api-version=2022-03-01";
    var httpClient = new HttpClient() { BaseAddress = new Uri("https://management.azure.com/") };
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AuthToken.Value);
    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var json = @"{
                  ""Properties"": {
                    ""Name"": ""ApiKey"",
                    ""Value"": ""some_value""
                  }
                }";

    using (var content = new StringContent(json, Encoding.UTF8, "application/json"))
    {
        var response = httpClient.PostAsync(resource, content).Result;

        if (!response.IsSuccessStatusCode)
            throw new Exception($"Error: Failed to register function key for {functionName}");
    }
}

研究:

在文档模拟器中执行此任务时,我成功了。

在此处输入图像描述

在此处输入图像描述

我尝试通过 Postman 在我的环境中重现相同内容,并得到以下结果:

当我在不包含不记名令牌的情况下运行以下查询时,我遇到了与401 Unauthorized相同的错误,如下所示:

PUT https://management.azure.com/subscriptions/<subID>/resourceGroups/<rgname>/providers/Microsoft.Web/sites/<funcappname>/functions/<funcname>/keys/<keyname>?api-version=2022-03-01
{
    "Properties": 
        {
            "Name": "keyname",
            "Value": "xxxxxxxxxxxx"
        }
}   

回复:

在此处输入图像描述

传递令牌后,我能够成功创建function 密钥,如下所示:

在此处输入图像描述

当我检查同一个门户时, srikey出现在 function 键下,如下所示:

在此处输入图像描述

在您的情况下,您使用的是httpClient.PostAsync ,这意味着POST方法。

当我使用POST方法进行以下查询时,我也遇到了404 Not found错误,如下所示:

POST https://management.azure.com/subscriptions/<subID>/resourceGroups/<rgname>/providers/Microsoft.Web/sites/<funcappname>/functions/<funcname>/keys/<keyname>?api-version=2022-03-01
{
    "Properties": 
        {
            "Name": "keyname",
            "Value": "xxxxxxxxxxxx"
        }
}   

回复:

在此处输入图像描述

解决该错误,请确保通过将httpClient.PostAsync方法更改为httpClient.PutAsync方法来使用PUT方法。

参考: HttpClient.PutAsync 方法 (System.Net.Http) | 微软

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM