azure - 如何以编程方式 (C#) 读取 Web 应用程序的自动缩放设置?

标签 azure azure-web-app-service azure-sdk-.net

我正在尝试使用 Microsoft.WindowsAzure.Management.Monitoring 和 Microsoft.WindowsAzure.Management.WebSites NuGet 包构建一个小程序来更改 Azure WebApps 的自动缩放设置。

我大致按照指南here进行操作.

但是,我们对扩展 Web 应用程序/应用程序服务而不是云服务感兴趣,因此我尝试使用相同的代码来读取自动缩放设置,但为我们的 Web 应用程序提供资源 ID。我已经获得了建立连接所需的凭据(使用弹出的浏览器窗口进行 Active Directory 身份验证,但我知道我们可以对非交互式程序使用 X.509 管理证书)。

这就是我想要提出的请求。凭证已建立,如果凭证无效,则会提前引发异常。

AutoscaleClient autoscaleClient = new AutoscaleClient(credentials);
var resourceId = AutoscaleResourceIdBuilder.BuildWebSiteResourceId(webspaceName: WebSpaceNames.NorthEuropeWebSpace, serverFarmName: "Default2");
AutoscaleSettingGetResponse get = autoscaleClient.Settings.Get(resourceId); // exception here

WebApp(我们称之为“MyWebApp”)是北欧地区名为“WebDevResources”的资源组中名为“Default2”(标准:1 个小型)的应用服务计划的一部分。我预计我的问题是我在代码中使用了错误的名称来构建 resourceId - 库中的命名约定不能很好地映射到我在 Azure 门户中看到的内容。

我假设 BuildWebSiteResourceId 是正确的调用方法,请参阅 MSDN 文档 here .

但是,它采用的两个参数是 webspaceName 和 serverFarmName,这两个参数都不与 Azure 门户(或 Google)中的任何内容匹配。我发现另一个示例似乎使用 WebApp 的地理区域作为 webSpaceName,因此我使用了托管我们的应用程序的北欧的预定义值。

在尝试在 Azure 门户中查找 serverFarmName 的正确值时,我找到了应用服务计划的资源 ID,如下所示:

/subscriptions/{subscription-guid}/resourceGroups/WebDevResources/providers/Microsoft.Web/serverfarms/Default2

该资源 ID 对于我尝试进行的调用无效,但它确实支持“服务器场”与应用服务计划相同的想法。

当我运行代码时,无论resourceId参数看起来是正确还是垃圾,我都会收到以下错误响应:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> {"Code":"SettingNotFound","Message":"Could not find the autoscale settings."} </string>

那么,如何为我的 WebApp 或应用服务计划构建正确的资源 ID?或者,我是否应该使用不同的树来以编程方式管理 WebApp 扩展?

更新: 下面的解决方案得到了我想要的信息。我还发现 resources.azure.com 上的 Azure 资源浏览器对于浏览现有资源并查找正确的名称非常有用。例如,我的自动缩放设置的名称实际上是“Default2-WebDevResources”,即“{AppServicePlan}-{ResourceGroup}”,这是我没想到的。

最佳答案

有预览服务https://resources.azure.com/您可以在其中轻松检查所有资源。如果您在 UI 中搜索autoscale,您将轻松找到资源的设置。它还将向您展示如何调用相关的 REST Api 端点来读取或更新该资源。

Azure Resource Explorer

它是一个很好的工具,可以揭示已部署资源的大量详细信息,并且实际上会为您正在查看的资源提供 ARM 模板 stub 。

为了回答您的问题,您可以通过更新的自动缩放设置从客户端以编程方式调用 REST API。 REST API 是实现此目的的一种方法,SDK 是另一种方法,PowerShell 是第三种方法。

关于azure - 如何以编程方式 (C#) 读取 Web 应用程序的自动缩放设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41887787/

相关文章:

azure - 在 COSMOS 中投影表并将其与 "Not In"子句一起使用

php - Azure 网站中的 PDO 语句与应用程序内的 MySQL

Linux 上的 Azure Web 应用程序突然停止工作

azure-sdk-.net - 新 (2022) Azure SDK .net - 获取 VM 主网络接口(interface)的私有(private) IP 地址

azure - 从 Asp.Net Core 中的 URL 中删除附加斜杠

powershell - Azure-Runbook : Suppress output of a cmdlet to summary or history

Azure - ARM 模板,锁定一项特定资源

python - Azure Web应用程序部署到tmp文件夹而不是wwwroot

Azure cspack.exe 抛出 System.Runtime.Remoting.RemotingException

azure-mobile-services - 添加 "Azure Mobile Apps Table Controller"时出错