使用 Visual Studio 创建你的第一个函数

Azure Functions 用于在无服务器环境中执行代码,无需先创建 VM 或发布 Web 应用程序。

本文介绍如何使用 Azure Functions 的 Visual Studio 2017 工具在本地创建并测试“hello world”函数。 然后将函数代码发布到 Azure。 Visual Studio 2017 中的 Azure 开发工作负荷已随附这些工具。

浏览器中的函数 localhost 响应

先决条件

完成本教程:

如果没有 Azure 订阅,可在开始前创建一个试用帐户

创建函数应用项目

Visual Studio 中的 Azure Functions 项目模板创建一个项目,该项目可发布到 Azure 中的函数应用。 函数应用可将函数分组为一个逻辑单元,以用于管理、部署和共享资源。

  1. 在 Visual Studio 中,从“文件”菜单中选择“新建” > “项目”。

  2. 在“新建项目”对话框中,选择“已安装”,展开“Visual C#” > “云”,选择“Azure Functions”,键入项目的“名称”,然后单击“确定”。 函数应用名称必须可以充当 C# 命名空间,因此请勿使用下划线、连字符或任何其他的非字母数字字符。

    “新建项目”对话框,用于在 Visual Studio 中创建函数

  3. 使用图像后的表中指定的设置。

    Visual Studio 中的“新建函数”对话框

    设置 建议的值 Description
    版本 Azure Functions 2.x
    (.NET Core)
    这会创建使用 Azure Functions 的版本 2.x 运行时(支持 .NET Core)的函数项目。 Azure Functions 1.x 支持 .NET Framework。 有关详细信息,请参阅如何指向 Azure Functions 运行时版本
    模板 HTTP 触发器 这会创建由 HTTP 请求触发的函数。
    存储帐户 存储模拟器 HTTP 触发器不使用存储帐户连接。 所有其他触发器类型需要有效的存储帐户连接字符串。
    访问权限 匿名 在未提供密钥的情况下,任何客户端都可以触发创建的函数。 通过此授权设置可以轻松测试新函数。 有关密钥和授权的详细信息,请参阅 HTTP 和 Webhook 绑定中的授权密钥
  4. 单击“确定”以创建函数项目和 HTTP 触发的函数。

Visual Studio 将创建一个项目,并在该项目中创建一个包含所选函数类型的样本代码的类。 方法中的 FunctionName 属性设置函数的名称。 HttpTrigger 属性指定该函数将由某个 HTTP 请求触发。 样本代码发送 HTTP 响应,其中包含请求正文或查询字符串中的值。 可以通过向方法应用相应的属性,将输入和输出绑定添加到函数。 有关详细信息,请参阅 Azure Functions C# 开发人员参考触发器和绑定部分。

创建函数项目和 HTTP 触发的函数后,可以在本地计算机上对其进行测试。

在本地测试函数

使用 Azure Functions Core Tools 可以在本地开发计算机上运行 Azure Functions 项目。 首次从 Visual Studio 启动某个函数时,系统会提示你安装这些工具。

  1. 若要测试函数,请按 F5。 如果系统提示,请按 Visual Studio 的请求下载和安装 Azure Functions Core (CLI) 工具。 可能还需启用一个防火墙例外,以便这些工具能够处理 HTTP 请求。

  2. 从 Azure Functions 运行时输出复制函数的 URL。

    Azure 本地运行时

  3. 将 HTTP 请求的 URL 粘贴到浏览器的地址栏中。 将查询字符串 ?name=<YOUR_NAME> 追加到此 URL 并执行请求。 下面演示浏览器中函数返回的对本地 GET 请求的响应:

    浏览器中的函数 localhost 响应

  4. 若要停止调试,请按 Shift + F5

验证该函数可以在本地计算机上正确运行以后,即可将项目发布到 Azure。

将项目发布到 Azure

必须在 Azure 订阅中有一个函数应用,然后才能发布项目。 可以直接从 Visual Studio 创建函数应用。

  1. 在“解决方案资源管理器” 中,右键单击该项目并选择“发布”。

  2. 依次选择“Azure Function App”、“新建”、“发布”。

    选取发布目标

    启用“从 Zip 运行”后,Azure 中的函数应用将进入只读模式,并且会直接从部署包运行。 有关详细信息,请参阅从包文件运行 Azure Functions

    Caution

    选择“选择现有”时,Azure 中现有函数应用中的所有文件都将被本地项目中的文件覆盖。 仅在将更新重新发布到现有函数应用时才使用此选项。

  3. 如果尚未将 Visual Studio 连接到 Azure 帐户,请选择“添加帐户...”。

  4. 在“创建应用服务”对话框中,使用在图片下方的表中指定的“托管”设置:

    “创建应用服务”对话框

    设置 建议的值 说明
    应用名称 全局唯一名称 用于唯一标识新 Function App 的名称。
    订阅 选择订阅 要使用的 Azure 订阅。
    资源组 MyResourceGroup 要在其中创建 Function App 的资源组的名称。 选择“新建”创建新的资源组。
    应用服务计划 按应用服务计划运行时,必须管理函数应用的缩放
    存储帐户 常规用途存储帐户 Functions 运行时需要 Azure 存储帐户。 单击“新建”创建一个常规用途存储帐户。 也可使用符合存储帐户要求的现有帐户。
  5. 单击“创建”以使用这些设置在 Azure 中创建函数应用和相关资源,并部署函数项目代码。

  6. 完成部署后,请记下“站点 URL”值,这是函数应用在 Azure 中的地址。

    发布成功消息

在 Azure 中测试函数

  1. 从“发布”配置文件页复制函数应用的基 URL。 将 URL 的 localhost:port 部分(在本地测试函数时使用)替换为新的基 URL。 与前面一样,请确保将查询字符串 ?name=<YOUR_NAME> 追加到此 URL 并执行请求。

    调用 HTTP 触发函数的 URL 应采用以下格式:

     http://<APP_NAME>.chinacloudsites.cn/api/<FUNCTION_NAME>?name=<YOUR_NAME> 
    
  2. 将 HTTP 请求的这个新 URL 粘贴到浏览器的地址栏中。 下面演示浏览器中函数返回的对远程 GET 请求的响应:

    浏览器中的函数响应

后续步骤

你已使用简单的 HTTP 触发函数通过 Visual Studio 创建和发布 C# 函数应用。