如何在 C# 中调用 Azure Rest API

2023-12-01

我是 C# 世界的新手。我有一个项目,需要从 700 多个订阅中收集所有区域的 Azure 计算使用配额。我已经使用 PowerShell (Get-AzVMUsage) 轻松完成了此操作。

我必须使用 C# 来完成。我想我需要使用 Rest API 来实现它。 (我愿意以另一种方式来实现这一目标)。

Azure 休息 API:GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/usages?api-version=2019-12-01

如何使用上述 Rest API 获取结果?一旦我从此 Rest API 获得结果,我就可以将业务逻辑置于其之上以执行数据聚合,并通过 700 多个订阅进行循环,并将数据转储到 SQL-MI 中。


我用谷歌搜索并从下面的网址找到了方法。

https://learn.microsoft.com/en-us/archive/blogs/benjaminperkins/how-to-securely-connect-to-azure-from-c-and-run-rest-apisMSDN 论坛

using System;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Newtonsoft.Json;

namespace AzureCapacityUsage
{
    class Program
    {
        static async Task Main()
        {            
            try 
            {
                string token = await GetAccessToken(TenantID,ClientID,Password); 
                await GetResults(token);              
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Exception: {ex.Message}");
            }
        }

        private static async Task<string> GetResults(string token)
        {
            var httpClient = new HttpClient
            {
                BaseAddress = new Uri("https://management.azure.com/subscriptions/")
            };

            string URI = $"{SubscriptionGUID}/providers/Microsoft.Compute/locations/{Region}/usages?api-version=2019-12-01";

            httpClient.DefaultRequestHeaders.Remove("Authorization");
            httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
            HttpResponseMessage response = await httpClient.GetAsync(URI);

            var HttpsResponse = await response.Content.ReadAsStringAsync();
            var JSONObject =  JsonConvert.DeserializeObject<object>(HttpsResponse);
            
            Console.WriteLine(JSONObject);
            var JSONObj = new JavaScriptSerializer().Deserialize<Dictionary<string, string>>(JSONObject);
            return response.StatusCode.ToString();

        }
        private static async Task<string> GetAccessToken(string tenantId, string clientId, string clientKey)
        {
            Console.WriteLine("Begin GetAccessToken");

            string authContextURL = "https://login.windows.net/" + tenantId;
            var authenticationContext = new AuthenticationContext(authContextURL);
            var credential = new ClientCredential(clientId, clientKey);
            var result = await authenticationContext

            .AcquireTokenAsync("https://management.azure.com/", credential);
            if (result == null)
            {
                throw new InvalidOperationException("Failed to obtain the JWT token");
            }
            string token = result.AccessToken;
            return token;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中调用 Azure Rest API 的相关文章

  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • 带有node-gyp的node.js应用程序无法在azure网站上部署

    我已经建立了一个 Azure 网站 并且正在尝试使用依赖于 node gyp 的示例应用程序 我得到这个 emote gt email protected cdn cgi l email protection install C DWASF
  • 如何使用 Azure ARM 模板自动安装 New Relic 扩展?

    我正在使用 azure arm 模板在 azure 中创建一个 Web 应用程序 现在我需要在将使用此模板创建的 Web 应用程序中安装 New Relic Extension 所以我无法找到特定的json格式 请帮帮我 请尝试在ARM模板
  • 无法对嵌套资源执行请求的操作。找不到父资源“****.io”

    我想在我的应用服务上设置新的 DNS 记录 在我的发布管道中的部署步骤之后 我已对其进行格式化以便于阅读 New AzDnsRecordSet Name e e staging ZoneName e d io ResourceGroupNa
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • C++ 长 switch 语句还是用地图查找?

    在我的 C 应用程序中 我有一些值充当代表其他值的代码 为了翻译代码 我一直在争论使用 switch 语句还是 stl 映射 开关看起来像这样 int code int value switch code case 1 value 10 b
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 将完整模板参数值映射到原始类型

    我想将数字映射到类型 在这个例子中 我将创建一个函数 将 sizeof 结果映射到有符号的原始类型 我想知道是否有更好的方法来完成我在现代 C 中所做的事情 即采用模板化值并将其转换为类型 现在 这可以将大小转换为已知类型 但我似乎无法在标
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 如何使用 SOAP 且不使用 WSE 在 .NET 中签署 Amazon Web 服务请求

    亚马逊产品广告 API 以前称为 Amazon Associates Web Service 或 Amazon AWS 实施了一项新规则 即自 2009 年 8 月 15 日起 向其发送的所有 Web 服务请求都必须经过签名 他们在其网站上
  • 是否存在指向不同类型的指针具有不同大小的平台?

    C 标准允许指向不同类型的指针具有不同的大小 例如sizeof char sizeof int 是允许的 但是 它确实要求如果将指针转换为void 然后转换回其原始类型 它必须与其原始值进行比较 因此 从逻辑上来说 sizeof void
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c

随机推荐

  • 如何使用 Google Apps 脚本代码创建草稿电子邮件(来自 985)?

    In 第985期 评论 29 中一位名为 yurec 可能 的开发人员提供了一些代码 用于在 Google Apps 脚本中创建草稿 文本 电子邮件 其他一些人感谢他所做的出色工作 并说它已经过测试并且有效 我对如何使用它以及代码的哪些部分
  • Python:通过迭代列表列表将项目附加到列表

    我是一个从 C 过渡到的 Python 新手 我基本上正在尝试实现与 C 中的数组指针数组等效的逻辑 我想通过迭代这些列表的列表来将一个项目附加到一堆列表的末尾 我有以下代码 data 10 20 30 list1 list2 list3
  • Swift - 如何确定 iOS 应用程序的最佳“部署目标”

    在 Xcode 上 您可以自行决定 部署目标 但您可能会选择太旧的版本来稳定运行应用程序 因为您的代码中的某些方法已被更高版本的 iOS 支持 例如 选择部署目标 8 0 但当您在 iOS 版本 8 0 的设备上运行应用程序时 应用程序崩溃
  • 为什么使用 Float(arc4random()) / 0xFFFFFFFF 而不是 drand()

    我是 Swift 新手 刚刚在教程中看到这段代码用于生成随机角度 func random gt CGFloat return CGFloat Float arc4random 0xFFFFFFFF func random min CGFlo
  • c# Clipboard返回null,但不能为空

    我正在尝试获取单击时生成并粘贴到剪贴板中的链接 我尝试了我能找到的一切 但我总是收到 null 即使当我将链接手动粘贴到记事本中时 我也明白了 我对每个定义的数据格式尝试了此代码 但所有内容都返回 null string clipboard
  • 如何交换两张卡而不改变其他卡的位置

    I have images in grid form something like this 我很清楚react dnd 它使用悬停来获取位置并相应地交换 我想要的是 Swap 1 with 4 and 4 with 1 怎么了 移动图像
  • 在 render 中调用 setState 是不可避免的

    React 文档指出render函数应该是pure这意味着它不应该使用this setState但是 我相信当状态依赖于 远程 时 即 ajax 调用的结果 唯一的解决方案是setState 里面一个render功能 就我而言 我们的用户应
  • 采用材料设计的自定义搜索栏

    我在布局中有一个搜索栏 用于自定义对话框首选项 我更改了 styles xml 以使用新的材质设计 它之所以有效 是因为它更改了我的设置的文本和复选框 但我无法将颜色应用到我的搜索栏 仅当我在活动中放置搜索栏时它才有效 这意味着我必须在自定
  • 将每小时的动物园时间序列输入函数 stl()

    在你问之前 是的 我需要显示这么多数据 stl 需要两个周期的数据 在本例中 一个周期有 24 个值 因此 stl 至少需要 48 个值 另外 来自 stl 帮助 这应该是 ts 类的对象 其频率大于 1 我正在升级一些旧的计算 以便我的数
  • 如何在 Angular 中将输入值作为参数传递给路由器

    我相信我想做的事情是微不足道的 但我尝试了很多不同的事情 但无法弄清楚 我有两个组件 SearchComponent and DetailsComponent显示搜索结果 路线模块 const routes Routes path comp
  • 后台工作进程还是线程?

    我有一个 Winform 应用程序 它在网格视图中列出了一批发票 用户选择批次并单击 生成发票 按钮 该过程大约需要 4 5 分钟 当它运行时 我将有一个选框进度条 并且想禁用所有按钮 我应该使用后台工作进程还是创建一个新线程来运行此任务
  • 使用具有特定标识的应用程序池运行 ASP.net 项目会产生“(403) Forbidden”

    尝试从 Visual Studio 启动 ASP net 项目时收到此错误消息 它不运行 Unable to start debugging on the web server The remote server returned an e
  • 检测android中启动了哪个应用程序

    如何检测用户在我的应用程序中启动了哪个应用程序 即当用户启动 Whatsapp 时 即使我的应用程序没有在前台或后台运行 我的应用程序也应该收到通知 远足信使通过无障碍服务实现了相同的功能 我怎么解决这个问题 提前致谢 根据运行应用程序的
  • 为什么 Cocoa-Touch 类 ivars 具有前导下划线字符?

    这次会议有什么目的吗 有一些开发人员使用以下约定通过以下方法 隐藏 ivars interface private NSString myString property nonatomic retain NSString myString
  • 如何在 Unity 检查器中根据其他变量值隐藏变量

    我如何根据统一检查器中的其他变量值隐藏变量 基本上想象一下 如果我有一个名为 CanSprint 的布尔值和一个名为 SprintSpeed 的浮点数 那么我想这样做 以便当布尔值为真时 浮点数显示 但当布尔值为假时 浮点数隐藏 这只是为了
  • java.lang.IllegalStateException:尝试重新打开已经关闭的对象

    我试图弄清楚为什么我偶尔会收到 IllegalStateException 我找不到任何好的示例来展示如何使用线程加载列表来查询 SQLite 数据库 我在下面包含了我的代码 大多数时候它工作正常 但偶尔我会收到 IllegalStateE
  • 如何在 jQuery UI 自动完成中实现“mustMatch”和“selectFirst”?

    我最近从 制作的插件中迁移了一些自动完成插件贝斯斯坦斯 to the jQuery UI 自动完成 如何仅使用回调和其他选项来实现 mustMatch 和 selectFirst 而不修改核心自动完成代码本身 我想我解决了这两个功能 为了让
  • 用普通的 ascii 字符替换重音字符[重复]

    这个问题在这里已经有答案了 我需要将姓氏列表转换为字母数字用户名 但不幸的是其中一些包含非 ASCII 字符 Hern ndez Querman s Miguel ez 现在 一种方法是使用正则表达式删除任何非字母数字字符 例如a repl
  • 计算 R 中单词出现的次数

    是否有一个函数可以计算特定关键字在数据集中包含的次数 例如 如果dataset lt c corn cornmeal corn on the cob meal 计数将为 3 我们暂时假设您想要包含 corn 的元素的数量 length gr
  • 如何在 C# 中调用 Azure Rest API

    我是 C 世界的新手 我有一个项目 需要从 700 多个订阅中收集所有区域的 Azure 计算使用配额 我已经使用 PowerShell Get AzVMUsage 轻松完成了此操作 我必须使用 C 来完成 我想我需要使用 Rest API