调用 Azure WebSiteManagementClient GetConfiguration 时 AppSettings 未返回
AppSettings is not returning when calling Azure WebSiteManagementClient GetConfiguration
使用 .NET Azure 包,我正在尝试读取我的 Azure 帐户上应用服务的 AppSettings。
当我尝试获取站点配置时,很多值都是 null,包括 AppSettings 属性
我在我的控制台应用程序中使用以下包:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Azure.Management.ResourceManager" version="1.1.3-preview" targetFramework="net462" />
<package id="Microsoft.Azure.Management.Websites" version="1.6.0-preview" targetFramework="net462" />
<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.0" targetFramework="net462" />
<package id="Microsoft.Rest.ClientRuntime" version="2.3.5" targetFramework="net462" />
<package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.5" targetFramework="net462" />
<package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.2.4-preview" targetFramework="net462" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net462" />
</packages>
下面的代码从应用服务读取配置
using Microsoft.Azure.Management.WebSites;
using Microsoft.Azure.Management.WebSites.Models;
using Microsoft.Rest.Azure.Authentication;
using System;
using System.Collections.Generic;
using System.Configuration;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string subscriptionId = ConfigurationManager.AppSettings["AzureSubscription"];
string tenantId = ConfigurationManager.AppSettings["AzureTenantId"];
string clientId = ConfigurationManager.AppSettings["ClientId"];
string clientSecret = ConfigurationManager.AppSettings["ClientSecret"];
var serviceCreds = ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret).Result;
WebSiteManagementClient webClient = new WebSiteManagementClient(serviceCreds);
webClient.SubscriptionId = subscriptionId;
string resourceGroup = ConfigurationManager.AppSettings["ResourceGroup"];
string appServiceName = ConfigurationManager.AppSettings["AppServiceName"];
string location = ConfigurationManager.AppSettings["AppLocation"];
SiteConfig siteConfig = webClient.WebApps.GetConfiguration(resourceGroup, appServiceName);
IList<NameValuePair> appSettings = siteConfig.AppSettings;
//appSettings is null, but shouldn't be
Console.Read();
}
}
}
我知道凭据是正确的,因为:
- siteConfig returns 门户中正确的一些数据
我可以使用以下代码更新应用程序设置:
var settings = new StringDictionary
{
Location = location,
Properties = new Dictionary<string, string>
{
{ "Key", "a value" },
},
};
webClient.WebApps.UpdateApplicationSettings(resourceGroup, appServiceName, settings);
更新:
我决定直接调用 REST API。出现同样的问题:
答案:
我不确定为什么应用程序设置没有作为 GetConfiguration 的一部分返回。
但是还有一个更 explicit 的方法确实有效
StringDictionary appSettings = webClient.WebApps.ListApplicationSettings(resourceGroup, appServiceName);
使用 .NET Azure 包,我正在尝试读取我的 Azure 帐户上应用服务的 AppSettings。
当我尝试获取站点配置时,很多值都是 null,包括 AppSettings 属性
我在我的控制台应用程序中使用以下包:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Azure.Management.ResourceManager" version="1.1.3-preview" targetFramework="net462" />
<package id="Microsoft.Azure.Management.Websites" version="1.6.0-preview" targetFramework="net462" />
<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.0" targetFramework="net462" />
<package id="Microsoft.Rest.ClientRuntime" version="2.3.5" targetFramework="net462" />
<package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.5" targetFramework="net462" />
<package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.2.4-preview" targetFramework="net462" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net462" />
</packages>
下面的代码从应用服务读取配置
using Microsoft.Azure.Management.WebSites;
using Microsoft.Azure.Management.WebSites.Models;
using Microsoft.Rest.Azure.Authentication;
using System;
using System.Collections.Generic;
using System.Configuration;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string subscriptionId = ConfigurationManager.AppSettings["AzureSubscription"];
string tenantId = ConfigurationManager.AppSettings["AzureTenantId"];
string clientId = ConfigurationManager.AppSettings["ClientId"];
string clientSecret = ConfigurationManager.AppSettings["ClientSecret"];
var serviceCreds = ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret).Result;
WebSiteManagementClient webClient = new WebSiteManagementClient(serviceCreds);
webClient.SubscriptionId = subscriptionId;
string resourceGroup = ConfigurationManager.AppSettings["ResourceGroup"];
string appServiceName = ConfigurationManager.AppSettings["AppServiceName"];
string location = ConfigurationManager.AppSettings["AppLocation"];
SiteConfig siteConfig = webClient.WebApps.GetConfiguration(resourceGroup, appServiceName);
IList<NameValuePair> appSettings = siteConfig.AppSettings;
//appSettings is null, but shouldn't be
Console.Read();
}
}
}
我知道凭据是正确的,因为:
- siteConfig returns 门户中正确的一些数据
我可以使用以下代码更新应用程序设置:
var settings = new StringDictionary { Location = location, Properties = new Dictionary<string, string> { { "Key", "a value" }, }, }; webClient.WebApps.UpdateApplicationSettings(resourceGroup, appServiceName, settings);
更新:
我决定直接调用 REST API。出现同样的问题:
答案:
我不确定为什么应用程序设置没有作为 GetConfiguration 的一部分返回。
但是还有一个更 explicit 的方法确实有效
StringDictionary appSettings = webClient.WebApps.ListApplicationSettings(resourceGroup, appServiceName);