在尝试访问政府云中的RateCard信息时,区域 usgovvirgia并从 github 上的示例工作:https ://github.com/Azure-Samples/billing-dotnet-usage-api 。
GitHub 示例引发未处理的异常:AADSTS65005(请参见下面的链接)
那里提到了这个错误,但是在修改程序的引用部分时,我还没有找到解决这个问题的方法,并且强烈怀疑这个问题是由于美国政府云的差异造成的。(有关门户中的应用程序设置,请参见下图)。
我的 RegisteredApp:
RateCardHM,appId/clientID:XXXXXXXX-4ba0-47a3-811e-ca0b0b74118a -> 所需权限->(委托 -- NoApplicationPermissionsAvailable)以组织用户身份访问 Azure 服务管理(预览版)
RequiresAdmin: No {"AADSTS65005: Invalid resource. 客户端请求访问未在客户端应用程序注册中请求的权限中列出的资源。客户端应用程序 ID: XXXXXXXX-XXXX-47a3-811e-ca0b0b74118a。来自请求的资源值: https://management.usgovcloudapi.net/ . 资源app ID: 40a69793-8fe6-4db1-9591-dbc5c57b17d8. 来自app注册的有效资源列表: 797f4846-ba00-4fd7-ba43-dac1f8f63013, 00000002-0000-0000- c000-000000000000。跟踪 ID:6c1f3716-12ca-489e-b183-99cb6f730300 相关 ID:57dbf637-8e01-42f2-873c-4723f1814254 时间戳:2018-03-14 18:43:33Z"}
由于 usgovvirginia 可能没有“2 字母 ISO 代码”,应该使用什么?
https://msdn.microsoft.com/en-us/library/azure/mt219004.aspx表示:
•将{RegionInfo} 设置为购买优惠的2 字母ISO 代码。与 usgovvirginia 地区和解。
<appSettings>
<add key="ADALServiceURL" value="https://login.microsoftonline.us"/>
<add key="ADALRedirectURL" value="http://localhost"/>
<add key="ARMBillingServiceURL" value="https://management.usgovcloudapi.net"/>
<add key="TenantDomain" value="XXXXX.onmicrosoft.com"/>
<add key="SubscriptionID" value="XXXXXXXX-1293-4060-a2ed-0da3db612bcc"/>
<add key="ClientId" value="XXXXXXXX-4ba0-47a3-811e-ca0b0b74118a"/>
<add key="RegionInfo" value="usgovvirginia"/> <!-- WHAT to use here? -->
</appSettings>
我更喜欢使用 PowerShell 进行访问,但让 C# 示例应用程序运行可能就足够了,而且肯定是一个好的开始。
更新如下(更多信息):
使用 PowerShell AzureRM(以我自己)登录后,Microsoft.Commerce 和 RateCard API 的“位置”为空:
(Get-AzureRmResourceProvider -ListAvailable | ? ProviderNamespace -eq Microsoft.Commerce)
# Outputs with LOCATION 'empty':
ProviderNamespace : Microsoft.Commerce
RegistrationState : Registered
ResourceTypes : {UsageAggregates, RateCard, operations}
Locations : {}
(Get-AzureRmResourceProvider -ListAvailable | ? ProviderNamespace -eq Microsoft.Commerce).ResourceTypes | ? ResourceTypeName -eq RateCard
# Outputs with LOCATION 'empty' also:
ResourceTypeName : RateCard
Locations : {}
ApiVersions : {2016-08-31-preview, 2015-06-01-preview, 2015-05-15}
可能这意味着 US Gov Cloud 不在任何地区提供这些 API?