我正在尝试使用 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 端点来读取或更新该资源。
它是一个很好的工具,可以揭示已部署资源的大量详细信息,并且实际上会为您正在查看的资源提供 ARM 模板 stub 。
为了回答您的问题,您可以通过更新的自动缩放设置从客户端以编程方式调用 REST API。 REST API 是实现此目的的一种方法,SDK 是另一种方法,PowerShell 是第三种方法。
关于azure - 如何以编程方式 (C#) 读取 Web 应用程序的自动缩放设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41887787/