你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Functions 让你可以使用 Visual Studio 创建本地 C# 函数项目,然后轻松发布此项目以在 Azure 中的可缩放无服务器环境中运行。 如果更喜欢使用 Visual Studio Code 在本地开发 C# 应用,建议查看此文档的基于 Visual Studio Code 的版本。
默认情况下,本文介绍如何在隔离的工作进程中创建在 .NET 8 上运行的 C# 函数。 Functions 支持的所有 .NET 版本都支持在独立工作进程中运行的函数应用。 有关详细信息,请参阅支持的版本。
在本文中,学习如何:
- 使用 Visual Studio 创建 C# 类库项目。
- 创建响应 HTTP 请求的函数。
- 在本地运行代码以验证函数行为。
- 将代码项目部署到 Azure Functions。
完成本快速入门会从你的 Azure 帐户中扣取最多几美分的费用。
此视频展示了如何在 Azure 中创建 C# 函数。
视频中的步骤也在以下部分进行了介绍。
Prerequisites
创建函数应用项目
Visual Studio 中的 Azure Functions 项目模板创建了一个 C# 类库项目,该项目可发布到 Azure 中的函数应用。 可使用函数应用将函数分组为逻辑单元,以便更轻松地管理、部署、缩放和共享资源。
在 Visual Studio 菜单中,选择“文件”>“新建”>“项目”。
在“创建新项目”中,在搜索框中输入“functions”,选择“Azure Functions”模板,然后选择“下一步”。
在“配置新项目”中,输入项目的“项目名称”,然后选择“下一步”。 函数应用名称必须可以充当 C# 命名空间,因此请勿使用下划线、连字符或任何其他的非字母数字字符。
对于剩余的“附加信息”设置,
设置 值 说明 Functions 辅助角色 .NET 8.0 隔离(长期支持) 你的函数在隔离的工作进程中在 .NET 8 上运行。 功能 HTTP 触发器 此值会创建由 HTTP 请求触发的函数。 将 Azurite 用于运行时存储账户 (AzureWebJobsStorage) 启用 由于 Azure 中的函数应用需要存储帐户,因此在将项目发布到 Azure 时会分配或创建一个存储帐户。 HTTP 触发器不使用 Azure 存储帐户连接字符串;所有其他触发器类型需要有效的 Azure 存储帐户连接字符串。 选择此选项后,将使用 Azurite 仿真器。 授权级别 匿名 在未提供密钥的情况下,任何客户端都可以触发创建的函数。 通过此授权设置可以轻松测试新函数。 有关详细信息,请参阅授权级别。
请确保将“授权级别”设置为“匿名”。 如果选择默认级别的函数,需要在请求中提供函数密钥才能访问 Azure 中的函数终结点。
选择“创建”以创建函数项目和 HTTP 触发器函数。
Visual Studio 将创建一个项目和一个包含 HTTP 触发器函数类型样本代码的类。 样本代码发送 HTTP 响应,其中包含来自请求正文或查询字符串的值。
HttpTrigger 属性指定该函数将由某个 HTTP 请求触发。
重命名函数
Function 方法属性设置函数的名称(默认情况下生成为 Function1)。 由于工具不允许在创建项目时覆盖默认函数名称,请花一点时间为函数类、文件和元数据创建更好的名称。
在“文件资源管理器”中,右键单击 Function1.cs 文件并将其重命名为
HttpExample.cs。在代码中,将 Function1 类重命名为
HttpExample。在名为
Run的方法中,将Function方法属性重命名为HttpExample。
函数定义现在应如以下代码所示:
[Function("HttpExample")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req)
{
_logger. LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult("Hello, functions");
}
重命名函数以后,即可在本地计算机上对其进行测试。
在本地运行函数
Visual Studio 与 Azure Functions Core Tools 集成,这样你便可使用完整的 Azure Functions 运行时在本地测试函数。
若要运行函数,请在 Visual Studio 中按 F5。 你可能需要启用防火墙例外,这样工具才能处理 HTTP 请求。 在本地运行函数时,永远不会强制实施授权级别。
从 Azure Functions 运行时输出复制函数的 URL。
将 HTTP 请求的 URL 粘贴到浏览器的地址栏中并运行请求。 下图显示了浏览器中函数返回的对本地 GET 请求的响应。
若要停止调试,请在 Visual Studio 中按 Shift+F5。
确认该函数可以在本地计算机上正确运行以后,即可将项目发布到 Azure。
将项目发布到 Azure
Visual Studio 可以将本地项目发布到 Azure。 必须在 Azure 订阅中有一个函数应用,然后才能发布项目。 如果 Azure 中还没有函数应用,Visual Studio 可以在发布项目之前帮助你创建一个函数应用。 在本文中,你将创建一个函数应用,该函数应用在 Flex Consumption 计划中运行,这是针对事件驱动和安全无服务器函数的建议计划。
在 解决方案资源管理器中,右键单击该项目,然后选择“ 发布”。
在 “发布 ”页上,进行以下选择:
- 在 “目标”上,选择 “Azure”,然后选择“ 下一步”。
- 在 “特定目标”上,选择 “Azure Function App”,然后选择“ 下一步”。
- 在 Functions 实例上,选择“ 新建”。
使用下表中指定的值创建新实例:
设置 值 说明 名称 全局唯一名称 该名称必须唯一标识新的函数应用。 接受建议的名称或输入新名称。 以下字符有效: a-z、0-9和-。订阅名称 订阅的名称 函数应用是在 Azure 订阅中创建的。 接受默认订阅或从列表中选择其他订阅。 资源组 资源组的名称 函数应用在资源组中创建。 选择“新建”来创建一个新的资源组。 还可以从列表中选择现有的资源组。 计划类型 弹性消耗 当您将项目发布到运行在 Flex Consumption 计划中的函数应用时,您可能只需为函数应用的执行次数付费。 其他托管计划可能会产生更高的成本。 重要提示:
创建弹性消耗计划时,必须先选择 应用服务计划 ,然后重新选择 Flex Consumption 以清除对话框的问题。操作系统 Linux Flex 消耗计划当前需要 Linux。 位置 应用服务的位置 选择 弹性消耗计划支持的 Azure 区域中的位置。 选择不受支持的区域时, “创建 ”按钮灰显。 实例内存大小 2048 运行应用的 虚拟机实例的内存大小 对于 Flex Consumption 计划是唯一的。 Azure 存储 常规用途存储帐户 Functions 运行时需要存储帐户。 选择“新建”即可配置常规用途存储帐户。 还可以使用满足 存储帐户要求的现有帐户。 Application Insights Application Insights 实例 应为函数应用启用 Application Insights 集成。 选择“新建”以在新的或现有的 Log Analytics 工作区中创建新实例。 还可以使用现有实例。
选择“创建”,在 Azure 中创建一个函数应用及其相关资源。 资源创建的状态显示在窗口左下角。
选择完成。 此时会显示 “发布配置文件创建进度 ”窗口。 创建配置文件时,选择“ 关闭”。
在发布配置文件页上,选择 “发布 ”将包含项目文件的包部署到 Azure 中的新函数应用。
部署完成后,Azure 中的函数应用的根 URL 将显示在发布配置文件页上。
在发布配置文件页上,导航至“主机托管”部分。 选择省略号 (...),然后选择“ 在 Azure 门户中打开”。 新的函数应用 Azure 资源将在 Azure 门户中打开。
在 Azure 中验证函数
在 Azure 门户中,你应位于新函数应用的“概述”页中。
在“函数”下,选择名为“HttpExample”的新函数,然后在函数页中选择“获取函数 URL”,然后选择“复制到剪贴板”图标。
在浏览器中的地址栏中,粘贴复制的 URL 并运行请求。
调用 HTTP 触发器函数的 URL 采用以下格式:
https://<APP_NAME>.azurewebsites.net/api/HttpExample?name=Functions转到此 URL,你会在浏览器中看到函数返回的对远程 GET 请求的响应,如下例所示:
清理资源
Azure 中的资源是指函数应用、函数、存储帐户等。 这些资源可以组合到资源组中,删除该组即可删除组中的所有内容。
你已创建 Azure 资源来完成本快速入门。 这些资源可能需要付费,具体取决于帐户状态和服务定价。 本教程系列中的其他快速入门教程是在本文的基础上制作的。 如果打算使用后续的快速入门、教程或者在本快速入门中创建的任何服务,请勿清理这些资源。
请使用以下步骤删除函数应用及其相关资源,以免产生任何额外的费用。
在“Visual Studio 发布”对话框中的“托管”部分中,选择“在 Microsoft Azure 门户中打开”。
在函数应用页中,请选择“概览”选项卡,然后选择“资源组”下的链接。
在“资源组”页中查看所包括的资源的列表,然后验证这些资源是否是要删除的。
选择“删除资源组”,然后按说明操作。
可能需要数分钟才能删除完毕。 完成后会显示一个通知,持续数秒。 也可以选择页面顶部的钟形图标来查看通知。
后续步骤
在本快速入门中,你已使用 Visual Studio,在 Azure 中创建并发布了一个 C# 函数应用,其中包含一个简单的 HTTP 触发器函数。
要详细了解如何使用在独立工作进程中运行的 C# 函数,请参阅在独立工作进程中运行 C# Azure Functions 的指南。 查看 .NET 支持的版本,了解独立工作进程中受支持的 .NET 版本的其他版本。
请转到下一篇文章,了解如何将一个 Azure 存储队列绑定添加到函数: