【发布时间】:2012-01-03 10:01:21
【问题描述】:
我需要从 Azure cscfg 文件中获取所有配置设置(当前角色或所有角色都无关紧要)。我想这样做是因为我不想通过 RoleEnvironment.GetConfigurationSettingValue(key) 方法一一获取所有值。
有什么办法吗?
问候
【问题讨论】:
-
您想对当前运行的应用程序执行此操作吗?
标签: configuration azure
我需要从 Azure cscfg 文件中获取所有配置设置(当前角色或所有角色都无关紧要)。我想这样做是因为我不想通过 RoleEnvironment.GetConfigurationSettingValue(key) 方法一一获取所有值。
有什么办法吗?
问候
【问题讨论】:
标签: configuration azure
简短的回答是“不”,RoleEnvironment 不支持获取所有配置设置值。
一个稍微长一点的答案是,在当前实现中从角色环境获取配置设置是通过调用本机代码来完成的。 Windows Azure 应用程序与 Windows Azure 配置的分离以及在正在运行的应用程序上交换设置的能力是这种情况的根源。这是在 msshrtmi.dll 内部完成的(这应该意味着类似于 Microsoft Shared Runtime Managed Interop)。这是 Microsoft.WindowsAzure.ServiceRuntime.dll 除了对 .NET 的标准引用之外的唯一引用。
这是对本机代码的方法调用(我没有比这更进一步):
[MethodImpl(MethodImplOptions.Unmanaged, MethodCodeType=MethodCodeType.Native), SuppressUnmanagedCodeSecurity, DllImport("", EntryPoint="", CallingConvention=CallingConvention.StdCall, SetLastError=true)] internal static extern unsafe int modopt(IsLong) modopt(CallConvStdcall) RdGetApplicationConfigurationSetting(ushort modopt(IsConst), ushort*);
【讨论】:
这似乎是一种稍微迂回的方式,但如果您想获取部署中所有角色的配置,您可以使用management api。
【讨论】:
Kudu 对此有一个 API。
您可以通过 App Services > Advanced Details > Go 访问 Kudu
https://{app-service-name}.scm.azurewebsites.net/
或者
https://{app-service-name}-{slot-name}.scm.azurewebsites.net/
设置 API 的 URL 是:
https://{app-service-name}.azurewebsites.net/api/settings 或 https://{app-service-name}-{slot-name}.scm.azurewebsites.net/
【讨论】: