如何执行Azure应用服务的POST列表应用程序设置

ljo96ir5  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(101)

通过Azure应用服务,我想获取应用的应用程序设置。https://learn.microsoft.com/en-us/rest/api/appservice/web-apps/list-application-settings
当我从站点使用“Try-it”并提供正确的参数时,调用工作。然而,在我的VS项目中,它不起作用。
下面我创建了一个简单的HTTPClient来实现这一点,但它不起作用。我错过了什么?

string clientId = "aaa";
        string clientSecret = "bbb";
        string tenantId = "ccc";

        var subscriptionId = "ddd";
        var resourceGroupName = "eee";
        var name = "fff";

        string apiUrl =
$"https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/appsettings/list?api-version=2022-03-01";

        try
        {
            IConfidentialClientApplication app = ConfidentialClientApplicationBuilder
                .Create(clientId)
                .WithClientSecret(clientSecret)
                .WithAuthority(new Uri($"https://login.microsoftonline.com/{tenantId}"))
                .Build();

            var scopes = new string[] { "https://management.azure.com/.default" };

            var result = await app.AcquireTokenForClient(scopes)
                .ExecuteAsync();

            using (HttpClient httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var content = new StringContent(String.Empty, Encoding.UTF8, "application/json");

                HttpResponseMessage response = await httpClient.PostAsync(apiUrl, content);

                if (response.IsSuccessStatusCode)
                {
                    string responseContent = await response.Content.ReadAsStringAsync();

                    Console.WriteLine("API Response:");
                    Console.WriteLine(responseContent);
                }
                else
                {
                    Console.WriteLine($"API call failed with status code: {response.StatusCode}");
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }

我猜我和PostAsync方法有关系。
提前感谢!
我试着做一个GET请求(https://learn.microsoft.com/en-us/rest/api/appservice/web-apps/get-function),它工作。

已解决,见Ikhtesam Afrin的评论。已将角色“网站贡献者”添加到Azure AD注册的应用程序中的函数应用程序。

pw9qyyiw

pw9qyyiw1#

我已经使用了你的代码,并得到了预期的结果,如下面的截图所示。

我只在我的功能应用程序中进行了以下更改。请将网站贡献者角色添加到您的Azure AD注册应用内的函数应用。

Output:


相关问题