我正在尝试使用Microsoft.WindowsAzure.Management.Monitoring和Microsoft.WindowsAzure.Management.WebSites NuGet包来构建一个小程序,以更改Azure WebApps的自动缩放设置。如何以编程方式(C#)读取WebApp的自动缩放设置?
我大致按照指南here。但是,我们有兴趣扩展WebApps/App Services而不是Cloud Services,因此我试图使用相同的代码来读取自动缩放设置,但为我们的WebApp提供了一个资源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
的Web应用程序(我们称之为“MyWebApp”)是一种应用服务计划的一部分,所谓的“默认设置2”(标准:1小),在资源组名为“WebDevResources”,在北欧地区。我期望我的问题是我使用错误的名称在代码中构建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无效对于我正在尝试的呼叫,但它确实支持'serverfarm'与App Service Plan相同的想法。
当我运行的代码,无论RESOURCEID参数看起来是否是正确的或垃圾,我得到这个错误响应:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> {"Code":"SettingNotFound","Message":"Could not find the autoscale settings."} </string>
所以,我怎样才能构建正确的资源ID为我的WebApp或应用程序服务计划?或者,是否有另一棵树我应该大吼大叫地按计划管理WebApp扩展?
更新: 下面的解决方案得到了我想要的信息。我还发现resources.azure.com上的Azure资源管理器对浏览现有资源并找到正确的名称非常有用。例如,我的自动缩放设置的名称实际上是“Default2-WebDevResources”,即我所不希望的“{AppServicePlan} - {ResourceGroup}”。
您的应用服务计划定价层标准及以上? – juvchan
定价等级列为标准:1小,我知道它是S1定价等级。我还通过Azure Portal创建了一个自动扩展计划,该计划允许我指定最多10个实例。 –
感谢您对原始问题的更新,这些问题为其他人提供了一些非常有用的提示。 – juvchan