C# Microsoft.Azure.Management.Consument.NET软件包和API版本
我正在尝试使用3.0.2包来访问使用和消费数据 但是,在调用C# Microsoft.Azure.Management.Consument.NET软件包和API版本,c#,azure,consumption,C#,Azure,Consumption,我正在尝试使用3.0.2包来访问使用和消费数据 但是,在调用UsageDetails.List时,我发现以下错误: 当前api版本不支持订阅作用域用法。请使用2019-10-01之后的api版本 是否有支持此版本的包的新版本(或预期会有) 在此期间,我还有什么选择 我可以直接使用一个GET-country https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.Consumptio
UsageDetails.List
时,我发现以下错误:
当前api版本不支持订阅作用域用法。请使用2019-10-01之后的api版本
是否有支持此版本的包的新版本(或预期会有)
在此期间,我还有什么选择
我可以直接使用一个GET-country
https://management.azure.com/subscriptions/<subscriptionId>/providers/Microsoft.Consumption/usageDetails?api-version=2019-10-01
验证代码示例:
private static AuthenticationResult GetToken()
{
string clientId = "MyappId";
string[] scopes = new string[] { "https://management.azure.com/.default" };
var app = PublicClientApplicationBuilder
.Create(clientId)
.WithRedirectUri("https://localhost")
.WithTenantId("TenantId I want to check")
.Build();
var task = app.GetAccountsAsync();
task.Wait();
var accounts = task.Result;
try
{
var task1 = app.AcquireTokenSilent(scopes, accounts.FirstOrDefault()).ExecuteAsync();
task1.Wait();
return task1.Result;
}
catch (MsalUiRequiredException)
{
var task2 = app.AcquireTokenInteractive(scopes).ExecuteAsync();
task2.Wait();
return task2.Result;
}
}
根据我的研究,我们可以初始化
ServiceClientCredentials
来创建ConsumptionManagementClient
,而ServiceClientCredentials
具有方法ProcessHttpRequestAsync
,我们可以使用该方法来重新创建请求
比如说
ServiceClientCredentials
根据我的研究,我们可以初始化
ServiceClientCredentials
来创建ConsumptionManagementClient
,而ServiceClientCredentials
具有方法ProcessHttpRequestAsync
,我们可以使用该方法来重新创建请求
比如说
ServiceClientCredentials
你提到了吗?我刚刚提出了一个问题,问你能提供你的代码吗?提供了代码。谢谢你能告诉我你的订阅类型吗?你提到过吗?我刚刚创建了一个问题,问你能提供你的代码吗?提供的代码。谢谢你能告诉我你的订阅类型吗?
private static AuthenticationResult GetToken()
{
string clientId = "MyappId";
string[] scopes = new string[] { "https://management.azure.com/.default" };
var app = PublicClientApplicationBuilder
.Create(clientId)
.WithRedirectUri("https://localhost")
.WithTenantId("TenantId I want to check")
.Build();
var task = app.GetAccountsAsync();
task.Wait();
var accounts = task.Result;
try
{
var task1 = app.AcquireTokenSilent(scopes, accounts.FirstOrDefault()).ExecuteAsync();
task1.Wait();
return task1.Result;
}
catch (MsalUiRequiredException)
{
var task2 = app.AcquireTokenInteractive(scopes).ExecuteAsync();
task2.Wait();
return task2.Result;
}
}
class CustomLoginCredentials : ServiceClientCredentials
{
private string AuthenticationToken { get; set; }
public override void InitializeServiceClient<T>(ServiceClient<T> client)
{
string clientId = "MyappId";
string[] scopes = new string[] { "https://management.azure.com/.default" };
var app = PublicClientApplicationBuilder
.Create(clientId)
.WithRedirectUri("https://localhost")
.WithTenantId("TenantId I want to check")
.Build();
var task = app.GetAccountsAsync();
task.Wait();
var accounts = task.Result;
try
{
var task1 = app.AcquireTokenSilent(scopes, accounts.FirstOrDefault()).ExecuteAsync();
task1.Wait();
AuthenticationToken= task1.Result.AccessToken;
}
catch (MsalUiRequiredException)
{
var task2 = app.AcquireTokenInteractive(scopes).ExecuteAsync();
task2.Wait();
AuthenticationToken= task2.Result.AccessToken;
}
}
public override async Task ProcessHttpRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
if (request == null)
{
throw new ArgumentNullException("request");
}
if (AuthenticationToken == null)
{
throw new InvalidOperationException("Token Provider Cannot Be Null");
}
var url = request.RequestUri.ToString().Split('?')[0] + "?";
var querys = request.RequestUri.ToString().Split('?')[1].Split('&');
for (var i = 1; i <= querys.Length; i++)
{
if (querys[i - 1].StartsWith("api-version"))
{
url += "api-version=2019-10-01";
}
else
{
url += querys[i - 1];
}
if (i < querys.Length)
{
url += "&";
}
}
Console.WriteLine(url);
request.RequestUri = new Uri(url);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", AuthenticationToken);
await base.ProcessHttpRequestAsync(request, cancellationToken);
}
}
var cred = new CustomLoginCredentials();
ConsumptionManagementClient client = new ConsumptionManagementClient(cred);
client.SubscriptionId = "SubscriptionId I would like to check";
var usage = client.UsageDetails.List();