是否有一种像访问Azure.Management.Consumption.Models时一样访问Microsoft.Azure.Management.Fluent的方法?
当我执行以下代码时,我看不到Azure.Management.Consumption是列表。我是不是遗漏了什么?
var azure = Microsoft.Azure.Management.Fluent.Azure
.Configure()
.Authenticate(credentials)
.WithDefaultSubscription();发布于 2020-01-06 03:17:37
根据我的测试,请参考以下代码
Microsoft.Azure.Management.ConsumptionInstall-Package Microsoft.Azure.Management.Consumption -Version 3.0.2az login
az ad sp create-for-rbac --name "" --role "<you can use Billing Reader, Reader, Owner, or Contributor role>" --sdk-auth trueprivate static string subscriptionId = "";
private const int NumberOfItems = 100;
public static async Task testCosAsync() {
var cred = new CustomLoginCredentials();
ConsumptionManagementClient client = new ConsumptionManagementClient(cred);
Console.WriteLine(client.ApiVersion);
client.SubscriptionId = subscriptionId;
Console.WriteLine("---------------1");
var r = await client.UsageDetails.ListAsync(null,null,null,top: NumberOfItems);
Console.WriteLine("---------------2");
var results = r.ToList<UsageDetail>();
foreach (var result in results) {
Console.WriteLine("Name:" + result.Name);
}
}
}
class CustomLoginCredentials : ServiceClientCredentials {
private static string tenantId = "";
private static string clientId = "you sp app id";
private static string cert = "your sp password";
private string AuthenticationToken { get; set; }
public override void InitializeServiceClient<T>(ServiceClient<T> client)
{
var authenticationContext =
new AuthenticationContext("https://login.windows.net/"+tenantId);
var credential = new ClientCredential(clientId: clientId, clientSecret: cert);
var result = authenticationContext.AcquireTokenAsync(resource: "https://management.azure.com/",
clientCredential: credential).Result;
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the JWT token");
}
AuthenticationToken = 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");
}
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", AuthenticationToken);
await base.ProcessHttpRequestAsync(request, cancellationToken);
}
}

有关更多详情,请参阅
https://learn.microsoft.com/en-us/azure/billing/billing-consumption-api-overview
https://stackoverflow.com/questions/59583988
复制相似问题