Разработка Функций Azure с помощью Visual StudioDevelop Azure Functions using Visual Studio

Visual Studio позволяет разрабатывать, тестировать и развертывать функции библиотеки классов C# в Azure.Visual Studio lets you develop, test, and deploy C# class library functions to Azure. Если вы впервые поработаете с функциями Azure, см. статью Общие сведения о функциях Azure.If this experience is your first with Azure Functions, see An introduction to Azure Functions.

Visual Studio предоставляет следующие преимущества при разработке функций:Visual Studio provides the following benefits when you develop your functions:

  • Создание, редактирование и выполнение функций на локальном компьютере для разработки.Edit, build, and run functions on your local development computer.
  • Опубликуйте проект функций Azure непосредственно в Azure и при необходимости создайте ресурсы Azure.Publish your Azure Functions project directly to Azure, and create Azure resources as needed.
  • Используйте атрибуты C# для объявления привязок функций непосредственно в коде C#.Use C# attributes to declare function bindings directly in the C# code.
  • Разработка и развертывание предварительно скомпилированных функций C#.Develop and deploy pre-compiled C# functions. Предварительно скомпилированные функции обеспечивают более высокую производительность при холодном запуске, чем функции C# на основе сценариев.Pre-complied functions provide a better cold-start performance than C# script-based functions.
  • Программирование функций в C#, сохраняя при этом все преимущества разработки в Visual Studio.Code your functions in C# while having all of the benefits of Visual Studio development.

В этой статье содержатся сведения об использовании Visual Studio для разработки функций библиотеки классов C# и их публикации в Azure.This article provides details about how to use Visual Studio to develop C# class library functions and publish them to Azure. Прежде чем приступить к ознакомлению с этой статьей, ознакомьтесь с кратким руководством по функциям Visual Studio.Before you read this article, consider completing the Functions quickstart for Visual Studio.

Если не указано иное, процедуры и примеры приведены для Visual Studio 2019.Unless otherwise noted, procedures and examples shown are for Visual Studio 2019.

Предварительные условияPrerequisites

  • Средства функций Azure.Azure Functions Tools. Чтобы добавить инструменты функций Azure, включите рабочую нагрузку разработки Azure в установку Visual Studio.To add Azure Function Tools, include the Azure development workload in your Visual Studio installation. Средства функций Azure доступны в рабочей нагрузке разработка Azure, начиная с Visual Studio 2017.Azure Functions Tools is available in the Azure development workload starting with Visual Studio 2017.

  • Другие необходимые ресурсы, например учетная запись хранения Azure, создаются в подписке во время процесса публикации.Other resources that you need, such as an Azure Storage account, are created in your subscription during the publishing process.

  • Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.If you don't have an Azure subscription, create a free account before you begin.

Примечание

В Visual Studio 2017 Рабочая нагрузка разработки Azure устанавливает инструменты функций Azure как отдельное расширение.In Visual Studio 2017, the Azure development workload installs Azure Functions Tools as a separate extension. При обновлении установки Visual Studio 2017 убедитесь, что вы используете самую последнюю версию средств функций Azure.When you update your Visual Studio 2017 installation, make sure that you're using the most recent version of the Azure Functions tools. В следующих разделах показано, как проверить и (при необходимости) обновить расширение средств работы с функциями Azure в Visual Studio 2017.The following sections show you how to check and (if needed) update your Azure Functions Tools extension in Visual Studio 2017.

Пропустите эти разделы, если используете Visual Studio 2019.Skip these sections if you're using Visual Studio 2019.

Проверка версии инструментов в Visual Studio 2017Check your tools version in Visual Studio 2017

  1. В меню Сервис выберите пункт Расширения и обновления.From the Tools menu, choose Extensions and Updates. Разверните узел установленные > инструменты, а затем выберите функции Azure и веб-задания.Expand Installed > Tools, and then choose Azure Functions and Web Jobs Tools.

    Проверка версии инструментов решения "Функции Azure"

  2. Обратите внимание на установленную версию и Сравните эту версию с последней версией, указанной в заметках о выпуске.Note the installed Version and compare this version with the latest version listed in the release notes.

  3. Если вы используете более раннюю версию, обновите инструменты в Visual Studio, как показано в следующем разделе.If your version is older, update your tools in Visual Studio as shown in the following section.

Обновление средств в Visual Studio 2017Update your tools in Visual Studio 2017

  1. В диалоговом окне Расширения и обновления последовательно выберите Обновления > Visual Studio Marketplace, Azure Functions and Web Jobs Tools (Инструменты для решения "Функции Azure" и веб-заданий) и нажмите кнопку Обновить.In the Extensions and Updates dialog, expand Updates > Visual Studio Marketplace, choose Azure Functions and Web Jobs Tools and select Update.

    Обновление версии инструментов решения "Функции Azure"

  2. После скачивания обновления инструментов нажмите кнопку Закрыть, а затем закройте Visual Studio, чтобы активировать обновление средств с помощью установщика VSIX.After the tools update is downloaded, select Close, and then close Visual Studio to trigger the tools update with VSIX Installer.

  3. В установщике VSIX выберите изменить , чтобы обновить средства.In VSIX Installer, choose Modify to update the tools.

  4. После завершения обновления нажмите кнопку Закрыть, а затем перезапустите Visual Studio.After the update is complete, choose Close, and then restart Visual Studio.

Примечание

В Visual Studio 2019 и более поздних версиях расширение "средства функций Azure" обновляется как часть Visual Studio.In Visual Studio 2019 and later, the Azure Functions tools extension is updated as part of Visual Studio.

Создание проекта Функций AzureCreate an Azure Functions project

С помощью шаблона проекта Функций Azure в Visual Studio можно создать проект, а затем опубликовать его в приложении-функции в Azure.The Azure Functions project template in Visual Studio creates a project that you can publish to a function app in Azure. Приложение-функция позволяет группировать функции в логические единицы и упростить развертывание, масштабирование и совместное использование ресурсов, а также управление ими.You can use a function app to group functions as a logical unit for easier management, deployment, scaling, and sharing of resources.

  1. В строке меню Visual Studio выберите Файл > Создать > Проект.From the Visual Studio menu, select File > New > Project.

  2. В разделе Создать новый проект введите в поле поиска слово функции, выберите шаблон Функции Azure, а затем нажмите кнопку Далее.In Create a new project, enter functions in the search box, choose the Azure Functions template, and then select Next.

  3. В разделе Настроить новый проект введите имя проекта, а затем выберите команду Создать.In Configure your new project, enter a Project name for your project, and then select Create. Имя приложения-функции должно быть допустимым в качестве пространства имен C#, поэтому не используйте символы подчеркивания, дефисы и другие символы, не являющиеся буквенно-цифровыми.The function app name must be valid as a C# namespace, so don't use underscores, hyphens, or any other nonalphanumeric characters.

  4. Для параметров в области Создание нового приложения Функций Azure используйте значения, указанные в таблице ниже.For the Create a new Azure Functions application settings, use the values in the following table:

    ПараметрSetting ЗначениеValue ОписаниеDescription
    Functions runtime (Среда выполнения функций)Functions runtime Функции Azure v3
    (.NET Core)
    Azure Functions v3
    (.NET Core)
    С помощью этого значения создается проект функции, использующий среду выполнения Функций Azure версии 3.x, которая поддерживает .NET Core 3.x.This value creates a function project that uses the version 3.x runtime of Azure Functions, which supports .NET Core 3.x. Функции Azure 1.x поддерживают .NET Framework.Azure Functions 1.x supports the .NET Framework. Дополнительные сведения см. в обзоре версий среды выполнения Функций Azure.For more information, see Azure Functions runtime versions overview.
    Function template (Шаблон функции)Function template триггером HTTPHTTP trigger С помощью этого значения создается функция, которая активируется с помощью HTTP-запроса.This value creates a function triggered by an HTTP request.
    Учетная запись хранения (AzureWebJobsStorage)Storage account (AzureWebJobsStorage) Эмулятор храненияStorage emulator Так как для функции Azure требуется учетная запись хранения, она назначается или создается при публикации проекта в Azure.Because an Azure Function requires a storage account, one is assigned or created when you publish your project to Azure. При активации с помощью HTTP-запроса не используется строка подключения учетной записи хранения Azure. Для всех остальных типов активации требуется допустимая строка подключения к учетной записи хранения Azure.An HTTP trigger doesn't use an Azure Storage account connection string; all other trigger types require a valid Azure Storage account connection string.
    Уровень авторизацииAuthorization level АнонимныйAnonymous Создаваемую функцию может активировать любой клиент без указания ключа.The created function can be triggered by any client without providing a key. Этот параметр авторизации позволяет легко тестировать новые функции.This authorization setting makes it easy to test your new function. Дополнительные сведения о ключах и авторизации см. в разделе Ключи авторизации, а также в обзоре привязок HTTP и веб-перехватчика.For more information about keys and authorization, see Authorization keys and HTTP and webhook bindings.

    Параметр проекта Функций Azure

    Убедитесь, что для параметра Уровень авторизации задано значение Анонимно.Make sure you set the Authorization level to Anonymous. Если вы выберете для функции уровень по умолчанию, нужно указать функциональную клавишу в запросах на доступ к конечной точке функции.If you choose the default level of Function, you're required to present the function key in requests to access your function endpoint.

  5. Нажмите кнопку Создать, чтобы создать проект функции и функцию, активируемую с помощью HTTP.Select Create to create the function project and HTTP trigger function.

После создания проекта функций Azure шаблон проекта создает проект C#, устанавливает Microsoft.NET.Sdk.Functions пакет NuGet и задает целевую платформу.After you create an Azure Functions project, the project template creates a C# project, installs the Microsoft.NET.Sdk.Functions NuGet package, and sets the target framework. Новый проект содержит следующие файлы:The new project has the following files:

  • host.json: позволяет настроить узел Функций.host.json: Lets you configure the Functions host. Эти параметры применяются как в локальном режиме, так и в Azure.These settings apply both when running locally and in Azure. Дополнительные сведения см. в справочной статье о host.json.For more information, see host.json reference.

  • local.settings.json: содержит параметры, используемые при выполнении функций локально.local.settings.json: Maintains settings used when running functions locally. Эти параметры не используются при работе в Azure.These settings aren't used when running in Azure. Дополнительные сведения см. в разделе локальный файл параметров.For more information, see Local settings file.

    Важно!

    Поскольку local.settings.jsв файле могут содержать секреты, необходимо исключить его из системы управления версиями проекта.Because the local.settings.json file can contain secrets, you must exclude it from your project source control. Убедитесь, что параметр Копировать в выходной каталог для этого файла имеет значение Копировать, если новее.Ensure the Copy to Output Directory setting for this file is set to Copy if newer.

Для получения дополнительных сведений см. Проект библиотеки классов функций.For more information, see Functions class library project.

Файл с локальными параметрамиLocal settings file

В локальном файле local.settings.json хранятся параметры приложения, строки подключения и параметры для локальных средств разработки.The local.settings.json file stores app settings, connection strings, and settings used by local development tools. Параметры в файле local.settings.json используются только при локальном выполнении проектов.Settings in the local.settings.json file are used only when you're running projects locally. Файл локальных параметров имеет следующую структуру:The local settings file has this structure:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "AzureWebJobsDashboard": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

При локальном выполнении проектов поддерживаются следующие параметры:These settings are supported when you run projects locally:

ПараметрSetting ОписаниеDescription
IsEncrypted Если этот параметр имеет значение true, все значения шифруются с помощью ключа локального компьютера.When this setting is set to true, all values are encrypted with a local machine key. Используется с командами func settings.Used with func settings commands. Значение по умолчанию — false.Default value is false. Возможно, вам потребуется зашифровать файл local.settings.json на локальном компьютере, если он содержит секреты, например строки подключения службы.You might want to encrypt the local.settings.json file on your local computer when it contains secrets, such as service connection strings. Узел автоматически расшифровывает параметры при запуске.The host automatically decrypts settings when it runs. Перед чтением локально зашифрованных параметров используйте команду func settings decrypt.Use the func settings decrypt command before trying to read locally encrypted settings.
Values Массив параметров приложения и строк подключения, используемых при локальном выполнении проекта.Array of application settings and connection strings used when a project is running locally. Эти пары "ключ — значение" (строковые выражения) соответствуют параметрам приложения-функции в Azure, например AzureWebJobsStorage.These key-value (string-string) pairs correspond to application settings in your function app in Azure, like AzureWebJobsStorage. Многие триггеры и привязки имеют свойство, относящееся к строке подключения параметра приложения, например Connection для триггера хранилища BLOB-объектов.Many triggers and bindings have a property that refers to a connection string app setting, like Connection for the Blob storage trigger. Для таких свойств требуется определить параметр приложения в массиве Values.For these properties, you need an application setting defined in the Values array. Список часто используемых параметров см. в следующей таблице.See the subsequent table for a list of commonly used settings.
Значения должны быть строками, а не объектами JSON или массивами.Values must be strings and not JSON objects or arrays. Имена параметров не могут содержать двоеточие (:) или двойное подчеркивание (__).Setting names can't include a colon (:) or a double underline (__). Символы двойного подчеркивания зарезервированы средой выполнения, а двоеточие зарезервировано для поддержки внедрения зависимостей.Double underline characters are reserved by the runtime, and the colon is reserved to support dependency injection.
Host Параметры в этом разделе служат для настройки хост-процесса Функций при выполнении проектов в локальной среде.Settings in this section customize the Functions host process when you run projects locally. Эти параметры отделены от параметров host.json, которые также применяются при выполнении проектов в Azure.These settings are separate from the host.json settings, which also apply when you run projects in Azure.
LocalHttpPort Задает порт по умолчанию, используемый при выполнении локального узла Функций (func host start и func run).Sets the default port used when running the local Functions host (func host start and func run). Аргумент командной строки --port имеет приоритет над этим параметром.The --port command-line option takes precedence over this setting.
CORS Определяет источники, для которых разрешен общий доступ к ресурсам независимо от источника (CORS).Defines the origins allowed for cross-origin resource sharing (CORS). Источники указываются в виде разделенного запятыми списка без пробелов.Origins are supplied as a comma-separated list with no spaces. Допускается подстановочное значение (*), разрешающее запросы из любого источника.The wildcard value (*) is supported, which allows requests from any origin.
CORSCredentials Если задано значение true, разрешает запросы withCredentials.When set to true, allows withCredentials requests.
ConnectionStrings Коллекция.A collection. Не применяйте эту коллекцию для строк подключения, используемых привязками функций.Don't use this collection for the connection strings used by your function bindings. Эта коллекция используется только платформами, которые обычно получают строки подключений из раздела ConnectionStrings в файле конфигурации, как например Entity Framework.This collection is used only by frameworks that typically get connection strings from the ConnectionStrings section of a configuration file, like Entity Framework. Строки подключения, содержащиеся в этом объекте, добавляются в среду с типом поставщика System.Data.SqlClient.Connection strings in this object are added to the environment with the provider type of System.Data.SqlClient. Элементы этой коллекции не публикуются в Azure с другими параметрами приложения.Items in this collection aren't published to Azure with other app settings. Необходимо явным образом добавить эти значения в коллекцию Connection strings в настройках приложения-функции.You must explicitly add these values to the Connection strings collection of your function app settings. Если вы создаете параметр SqlConnection в коде функции, следует сохранить значение строки подключения на портале в Параметрах приложения, вместе с другими подключениями.If you're creating a SqlConnection in your function code, you should store the connection string value with your other connections in Application Settings in the portal.

Следующие параметры приложения можно включать в массив Values при локальном запуске.The following application settings can be included in the Values array when running locally:

ПараметрSetting ЗначенияValues ОписаниеDescription
AzureWebJobsStorage Строка подключения учетной записи хранения илиStorage account connection string, or
UseDevelopmentStorage=true
Содержит строку подключения для учетной записи хранения AzureContains the connection string for an Azure storage account. Требуется при использовании триггеров, отличающихся от HTTP.Required when using triggers other than HTTP. См. справочник по AzureWebJobsStorage.For more information, see the AzureWebJobsStorage reference.
При наличии локального эмулятора службы хранилища Azure вы можете задать для AzureWebJobsStorage значение UseDevelopmentStorage=true, чтобы в Core Tools использовался эмулятор.When you have the Azure Storage Emulator installed locally and you set AzureWebJobsStorage to UseDevelopmentStorage=true, Core Tools uses the emulator. Эмулятор удобно использовать во время разработки, но перед развертыванием следует проверить работу с реальным подключением к хранилищу.The emulator is useful during development, but you should test with an actual storage connection before deployment.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Чтобы отключить функцию при локальном выполнении, добавьте в коллекцию "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true", где <FUNCTION_NAME> — имя функции.To disable a function when running locally, add "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" to the collection, where <FUNCTION_NAME> is the name of the function. См. сведения о том, как отключать и включать функции в Функциях Azure.To learn more, see How to disable functions in Azure Functions
FUNCTIONS_WORKER_RUNTIME dotnet
node
java
powershell
python
Указывает целевой язык среды выполнения Функций.Indicates the targeted language of the Functions runtime. Требуется для среды выполнения Функций версии 2.x и выше.Required for version 2.x and higher of the Functions runtime. Этот параметр создается для проекта с помощью Core Tools.This setting is generated for your project by Core Tools. См. справочник по FUNCTIONS_WORKER_RUNTIME.To learn more, see the FUNCTIONS_WORKER_RUNTIME reference.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Указывает, что PowerShell 7 будет использоваться при локальном запуске.Indicates that PowerShell 7 be used when running locally. Если параметр не задан, используется PowerShell Core 6.If not set, then PowerShell Core 6 is used. Этот параметр используется только при локальном запуске.This setting is only used when running locally. При запуске в Azure версия среды выполнения PowerShell определяется параметром конфигурации сайта powerShellVersion, который можно настроить на портале.When running in Azure, the PowerShell runtime version is determined by the powerShellVersion site configuration setting, which can be set in the portal.

Visual Studio не будет автоматически отправлять параметры в local.settings.jsпри публикации проекта.Visual Studio doesn't automatically upload the settings in local.settings.json when you publish the project. Чтобы убедиться, что эти параметры также существуют в приложении функции в Azure, отправьте их после публикации проекта.To make sure that these settings also exist in your function app in Azure, upload them after you publish your project. Дополнительные сведения см. в разделе Параметры приложения функции.For more information, see Function app settings. Значения в ConnectionStrings коллекции никогда не публикуются.The values in a ConnectionStrings collection are never published.

Код также может считывать значения параметров приложения функции в виде переменных среды.Your code can also read the function app settings values as environment variables. Дополнительную информацию см. в разделе Переменные среды.For more information, see Environment variables.

Настройка параметров вывода сборкиConfigure your build output settings

При построении проекта функций Azure средства сборки оптимизируют выходные данные таким образом, чтобы сохранялась только одна копия всех сборок, которые совместно используются в среде выполнения функций.When building an Azure Functions project, the build tools optimize the output so that only one copy of any assemblies that are shared with the functions runtime are preserved. Результатом является оптимизированная сборка, которая сохраняет как можно больше пространства.The result is an optimized build that saves as much space as possible. Однако при переходе к более поздней версии любой из сборок проекта средства сборки могут не иметь сведений о том, что эти сборки должны быть сохранены.However, when you move to a more recent version of any of your project assemblies, the build tools might not know that these assemblies must be preserved. Чтобы убедиться, что эти сборки сохраняются во время процесса оптимизации, их можно указать с помощью FunctionsPreservedDependencies элементов в файле проекта (csproj):To make sure that these assemblies are preserved during the optimization process, you can specify them using FunctionsPreservedDependencies elements in the project (.csproj) file:

  <ItemGroup>
    <FunctionsPreservedDependencies Include="Microsoft.AspNetCore.Http.dll" />
    <FunctionsPreservedDependencies Include="Microsoft.AspNetCore.Http.Extensions.dll" />
    <FunctionsPreservedDependencies Include="Microsoft.AspNetCore.Http.Features.dll" />
  </ItemGroup>

Настройка проекта для локальной разработкиConfigure the project for local development

Среде выполнения Функций Azure необходима учетная запись хранения Azure для внутреннего использования.The Functions runtime uses an Azure Storage account internally. Для всех типов триггеров, отличных от HTTP и веб-перехватчиков, задайте Values.AzureWebJobsStorage для ключа допустимую строку подключения к учетной записи хранения Azure.For all trigger types other than HTTP and webhooks, set the Values.AzureWebJobsStorage key to a valid Azure Storage account connection string. Приложение функции также может использовать эмулятор хранения Azure для AzureWebJobsStorage параметра подключения, который требуется для проекта.Your function app can also use the Azure Storage Emulator for the AzureWebJobsStorage connection setting that's required by the project. Чтобы использовать эмулятор, присвойте свойству значение AzureWebJobsStorage UseDevelopmentStorage=true .To use the emulator, set the value of AzureWebJobsStorage to UseDevelopmentStorage=true. Измените этот параметр на действительную строку подключения учетной записи хранения перед развертыванием.Change this setting to an actual storage account connection string before deployment.

Чтобы задать строку подключения к учетной записи хранения, выполните следующие действия:To set the storage account connection string:

  1. В Visual Studio выберите Просмотреть > Cloud Explorer.In Visual Studio, select View > Cloud Explorer.

  2. В Cloud Explorer разверните учетные записи хранения, а затем выберите свою учетную запись хранения.In Cloud Explorer, expand Storage Accounts, and then select your storage account. На вкладке Свойства скопируйте основное значение строки подключения .In the Properties tab, copy the Primary Connection String value.

  3. В проекте откройте local.settings.jsв файле и задайте в качестве значения AzureWebJobsStorage ключа скопированную строку подключения.In your project, open the local.settings.json file and set the value of the AzureWebJobsStorage key to the connection string you copied.

  4. Повторите предыдущий шаг, чтобы добавить уникальные ключи в Values массив для любых других подключений, необходимых для ваших функций.Repeat the previous step to add unique keys to the Values array for any other connections required by your functions.

Добавление функции в проектAdd a function to your project

В функциях библиотеки классов C# привязки, используемые функцией, определяются путем применения атрибутов в коде.In C# class library functions, the bindings used by the function are defined by applying attributes in the code. При создании триггеров функций из предоставленных шаблонов применяются атрибуты триггера.When you create your function triggers from the provided templates, the trigger attributes are applied for you.

  1. В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите Добавить > новый элемент.In Solution Explorer, right-click your project node and select Add > New Item.

  2. Выберите функция Azure, введите имя класса и нажмите кнопку добавить.Select Azure Function, enter a Name for the class, and then select Add.

  3. Выберите триггер, задайте свойства привязки, а затем нажмите кнопку ОК.Choose your trigger, set the binding properties, and then select OK. В следующем примере показаны параметры для создания функции триггера хранилища очередей.The following example shows the settings for creating a Queue storage trigger function.

    Создание функции триггера хранилища очередей

    В этом примере триггера используется строка подключения с ключом QueueStorage .This trigger example uses a connection string with a key named QueueStorage. Определите этот параметр строки подключения в local.settings.jsфайла.Define this connection string setting in the local.settings.json file.

  4. Проверьте добавленный класс.Examine the newly added class. Вы увидите статический Run() метод с атрибутом FunctionName .You see a static Run() method that's attributed with the FunctionName attribute. Этот атрибут указывает, что метод является точкой входа для функции.This attribute indicates that the method is the entry point for the function.

    Например, следующий класс C# представляет базовую функцию триггера хранилища очередей:For example, the following C# class represents a basic Queue storage trigger function:

    using System;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Host;
    using Microsoft.Extensions.Logging;
    
    namespace FunctionApp1
    {
        public static class Function1
        {
            [FunctionName("QueueTriggerCSharp")]
            public static void Run([QueueTrigger("myqueue-items", 
                Connection = "QueueStorage")]string myQueueItem, ILogger log)
            {
                log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
            }
        }
    }
    

Определяемый привязкой атрибут применяется к каждому параметру привязки, передаваемому в метод точки входа.A binding-specific attribute is applied to each binding parameter supplied to the entry point method. Атрибут принимает сведения о привязке в качестве параметров.The attribute takes the binding information as parameters. В предыдущем примере к первому параметру QueueTrigger применен атрибут, указывающий на функцию триггера хранилища очередей.In the previous example, the first parameter has a QueueTrigger attribute applied, indicating a Queue storage trigger function. Имя очереди и имя параметра строки подключения передаются в качестве параметров в QueueTrigger атрибут.The queue name and connection string setting name are passed as parameters to the QueueTrigger attribute. Дополнительные сведения см. в статье Привязки хранилища очередей Azure для службы "Функции Azure".For more information, see Azure Queue storage bindings for Azure Functions.

Используйте описанную выше процедуру, чтобы добавить дополнительные функции в проект приложения функции.Use the above procedure to add more functions to your function app project. У всех функций в проекте могут быть разные триггеры, однако у каждой должно быть не больше и не меньше одного триггера.Each function in the project can have a different trigger, but a function must have exactly one trigger. Дополнительные сведения см. в разделе Основные понятия триггеров и привязок в Функциях Azure.For more information, see Azure Functions triggers and bindings concepts.

Добавление привязокAdd bindings

Как и триггеры, входные и выходные привязки добавляются к функции в виде атрибутов.As with triggers, input and output bindings are added to your function as binding attributes. Добавьте привязки к функции следующим образом:Add bindings to a function as follows:

  1. Убедитесь, что проект настроен для локальной разработки.Make sure you've configured the project for local development.

  2. Добавьте соответствующий пакет расширений NuGet для конкретной привязки.Add the appropriate NuGet extension package for the specific binding.

    Дополнительные сведения см. в разделе Библиотека классов C# с Visual Studio.For more information, see C# class library with Visual Studio. Требования к пакету NuGet, зависящие от привязки, приведены в справочной статье по привязке.Find the binding-specific NuGet package requirements in the reference article for the binding. Например, требования к пакету для триггера Центров событий см. в справочной статье о привязках Центров событий.For example, find package requirements for the Event Hubs trigger in the Event Hubs binding reference article.

  3. Если имеются параметры приложения, необходимые для привязки, добавьте их в Values коллекцию в файле локального параметра.If there are app settings that the binding needs, add them to the Values collection in the local setting file.

    Функция использует эти значения при локальном запуске.The function uses these values when it runs locally. Когда функция выполняется в приложении функции в Azure, она использует Параметры приложения функции.When the function runs in the function app in Azure, it uses the function app settings.

  4. Добавьте соответствующий атрибут привязки в сигнатуру метода.Add the appropriate binding attribute to the method signature. В примере ниже сообщение очереди активирует функцию, а с помощью выходной привязки создается новое сообщение с таким же текстом, но в другой очереди.In the following example, a queue message triggers the function, and the output binding creates a new queue message with the same text in a different queue.

    public static class SimpleExampleWithOutput
    {
        [FunctionName("CopyQueueMessage")]
        public static void Run(
            [QueueTrigger("myqueue-items-source", Connection = "AzureWebJobsStorage")] string myQueueItem, 
            [Queue("myqueue-items-destination", Connection = "AzureWebJobsStorage")] out string myQueueItemCopy,
            ILogger log)
        {
            log.LogInformation($"CopyQueueMessage function processed: {myQueueItem}");
            myQueueItemCopy = myQueueItem;
        }
    }
    

    Подключение к хранилищу очередей устанавливается с помощью параметра AzureWebJobsStorage.The connection to Queue storage is obtained from the AzureWebJobsStorage setting. Дополнительные сведения см. в справочной статье по определенной привязке.For more information, see the reference article for the specific binding.

В этой таблице показаны привязки, которые поддерживаются в двух основных версиях среды выполнения Функций Azure.This table shows the bindings that are supported in the major versions of the Azure Functions runtime:

ТипType 1.x1.x 2.x и выше12.x and higher1 ТриггерTrigger Входные данныеInput Выходные данныеOutput
Хранилище BLOB-объектовBlob storage
Azure Cosmos DBAzure Cosmos DB
Dapr3Dapr3
Сетка событийEvent Grid
Центры событийEvent Hubs
HTTP и веб-перехватчикиHTTP & webhooks
Центр Интернета вещейIoT Hub
Kafka2Kafka2
Мобильные приложенияMobile Apps
Центры уведомленийNotification Hubs
Хранилище очередейQueue storage
RabbitMQ2RabbitMQ2
SendGridSendGrid
Служебная шинаService Bus
SignalRSignalR
Хранилище таблицTable storage
ТаймерTimer
TwilioTwilio

1 Начиная со среды выполнения версии 2.х, все привязки, кроме HTTP и Timer, должны быть зарегистрированы.1 Starting with the version 2.x runtime, all bindings except HTTP and Timer must be registered. Ознакомьтесь с разделом Регистрация расширений привязки.See Register binding extensions.

2 Триггеры не поддерживаются в плане потребления.2 Triggers aren't supported in the Consumption plan. Требуются триггеры, управляемые средой выполнения.Requires runtime-driven triggers.

3 Поддерживается только в Kubernetes, IoT Edge и других автономных режимах.3 Supported only in Kubernetes, IoT Edge, and other self-hosted modes only.

Функции тестированияTesting functions

Основные инструменты службы Функции Azure позволяют запускать проекты функций Azure на локальном компьютере разработчика.Azure Functions Core Tools lets you run Azure Functions project on your local development computer. Дополнительные сведения см. в разделе Работа с Azure functions Core Tools.For more information, see Work with Azure Functions Core Tools. Вам будет предложено установить эти средства при первом запуске функции из Visual Studio.You're prompted to install these tools the first time you start a function from Visual Studio.

Чтобы протестировать функцию в Visual Studio, выполните следующие действия.To test your function in Visual Studio:

  1. Нажмите клавишу F5.Press F5. Если будет предложено, примите запрос от Visual Studio на скачивание и установку основных инструментов службы Функции Azure (CLI).If prompted, accept the request from Visual Studio to download and install Azure Functions Core (CLI) tools. Кроме того, возможно, вам понадобиться включить исключение брандмауэра, чтобы инструменты могли обрабатывать HTTP-запросы.You might also need to enable a firewall exception so that the tools can handle HTTP requests.

  2. При выполнении проекта Протестируйте код так же, как вы протестируете развернутую функцию.With the project running, test your code as you would test a deployed function.

    Дополнительные сведения см. в статье Методика тестирования кода с помощью Функций Azure.For more information, see Strategies for testing your code in Azure Functions. При запуске Visual Studio в режиме отладки выполняются ожидаемые точки останова.When you run Visual Studio in debug mode, breakpoints are hit as expected.

Публикация в AzurePublish to Azure

При публикации из Visual Studio используется один из двух методов развертывания:When you publish from Visual Studio, it uses one of two deployment methods:

Выполните следующие действия, чтобы опубликовать проект в приложении-функции в Azure.Use the following steps to publish your project to a function app in Azure.

  1. В Обозревателе решений щелкните правой кнопкой мыши проект, выберите Опубликовать, для параметра Целевой объект выберите Azure и щелкните Далее.In Solution Explorer, right-click the project and select Publish and in Target, select Azure then Next.

  2. Для параметра Указанный целевой объект выберите Приложение-функция Azure (Windows) , чтобы создать приложение, выполняемое в Windows.For the Specific target, choose Azure Function App (Windows), which creates a function app that runs on Windows.

  3. На странице Экземпляр Функций выберите Создать новую функцию Azure.In Function Instance, choose Create a new Azure Function...

    Создание нового экземпляра приложения-функции

  4. Создайте новый экземпляр, используя значения, указанные в следующей таблице.Create a new instance using the values specified in the following table:

    ПараметрSetting ЗначениеValue ОписаниеDescription
    имя;Name Глобально уникальное имяGlobally unique name Имя, которое однозначно идентифицирует новое приложение-функцию.Name that uniquely identifies your new function app. Используйте это имя или введите новое.Accept this name or enter a new name. Допустимые символы: a-z, 0-9 и -.Valid characters are: a-z, 0-9, and -.
    ПодпискаSubscription Ваша подпискаYour subscription Подписка Azure, которую нужно использовать.The Azure subscription to use. Используйте эту подписку или выберите новую из раскрывающегося списка.Accept this subscription or select a new one from the drop-down list.
    Группа ресурсовResource group Имя группы ресурсовName of your resource group Группа ресурсов, в которой создается приложение-функция.The resource group in which to create your function app. Выберите существующую группу ресурсов из раскрывающегося списка или нажмите Создать, чтобы создать новую.Select an existing resource group from the drop-down list or choose New to create a new resource group.
    Тип планаPlan Type ПотреблениеConsumption При публикации проекта в приложении-функции, которое работает в плане потребления, вы платите только за выполнение приложения-функции.When you publish your project to a function app that runs in a Consumption plan, you pay only for executions of your functions app. Другие планы размещения связаны с дополнительными расходами.Other hosting plans incur higher costs.
    РасположениеLocation Расположение Службы приложений.Location of the app service Выберите расположение в ближайшем к вам регионе или регионе, ближайшем к другим службам, к которым обращаются ваши функции.Choose a Location in a region near you or other services your functions access.
    Служба хранилища AzureAzure Storage Учетная запись хранения общего назначенияGeneral-purpose storage account Учетная запись хранения Azure — обязательный ресурс для среды выполнения Функций.An Azure Storage account is required by the Functions runtime. Выберите Создать, чтобы настроить учетную запись хранения общего назначения.Select New to configure a general-purpose storage account. Можно также использовать существующую учетную запись при условии, что она соответствует требованиям учетной записи хранения.You can also choose an existing account that meets the storage account requirements.

    Диалоговое окно "Создание службы приложений"

  5. Нажмите кнопку Создать, чтобы создать приложение-функцию и связанные с ним ресурсы в Azure.Select Create to create a function app and its related resources in Azure. Состояние операции создания отображается в окне внизу слева.Status of resource creation is shown in the lower left of the window.

  6. На вкладке Экземпляр Функций установите флажок Запустить из файла пакета.Back in Functions instance, make sure that Run from package file is checked. Приложение-функция развертывается с помощью Zip Deploy с включенным режимом Run-From-Package (Выполнение из пакета).Your function app is deployed using Zip Deploy with Run-From-Package mode enabled. Это рекомендуемый метод развертывания для проекта функций, так как он обеспечивает лучшую производительность.This is the recommended deployment method for your functions project, since it results in better performance.

    Завершение создания профиля

  7. Нажмите кнопку Готово и на странице "Публикация" выберите Опубликовать, чтобы развернуть пакет с файлами проекта в новом приложении-функции в Azure.Select Finish, and on the Publish page, select Publish to deploy the package containing your project files to your new function app in Azure.

    Когда развертывание будет завершено, корневой URL-адрес приложения-функции в Azure отобразится на вкладке Публикация.After the deployment completes the root URL of the function app in Azure is shown in the Publish tab.

  8. На вкладке "Публикация" выберите Управление в Cloud Explorer.In the Publish tab, choose Manage in Cloud Explorer. В результате в Cloud Explorer будет открыт новый ресурс функции-приложения Azure.This opens the new function app Azure resource in Cloud Explorer.

    Сообщение об успешной публикации

    В Cloud Explorer вы можете с помощью Visual Studio просматривать содержимое сайта, запускать и останавливать работу приложения-функции, а также переходить непосредственно к ресурсам функций-приложений в Azure и на портале Azure.Cloud Explorer lets you use Visual Studio to view the contents of the site, start and stop the function app, and browse directly to function app resources on Azure and in the Azure portal.

Параметры приложения-функцииFunction app settings

Так как Visual Studio не передает эти параметры автоматически при публикации проекта, все параметры, добавляемые в local.settings.js, необходимо также добавить в приложение-функцию в Azure.Because Visual Studio doesn't upload these settings automatically when you publish the project, any settings you add in the local.settings.json you must also add to the function app in Azure.

Самый простой способ отправить необходимые параметры в приложение-функцию в Azure — выбрать ссылку Управление параметрами службы приложений Azure , которая появится после успешной публикации проекта.The easiest way to upload the required settings to your function app in Azure is to select the Manage Azure App Service settings link that appears after you successfully publish your project.

Параметры в окне публикации

При выборе этой ссылки открывается диалоговое окно Параметры приложения для приложения функции, в котором можно добавлять новые параметры приложения или изменять существующие.Selecting this link displays the Application settings dialog for the function app, where you can add new application settings or modify existing ones.

Параметры приложений

Локально отображает значение параметра в local.settings.jsдля файла, а Удаленное отображение текущего значения параметра в приложении-функции в Azure.Local displays a setting value in the local.settings.json file, and Remote displays a current setting value in the function app in Azure. Чтобы создать параметр приложения, выберите Добавьте параметр.Choose Add setting to create a new app setting. Используйте ссылку Вставка локального значения, чтобы скопировать значение параметра в поле Удаленный.Use the Insert value from Local link to copy a setting value to the Remote field. Когда вы нажмете кнопку ОК, ожидающие изменения запишутся в файл с локальными параметрами и приложение-функцию.Pending changes are written to the local settings file and the function app when you select OK.

Примечание

По умолчанию local.settings.jsдля файла не возвращается в систему управления версиями.By default, the local.settings.json file is not checked into source control. Это означает, что при клонировании проекта локальных функций из системы управления версиями проект не будет иметь local.settings.jsв файле.This means that if you clone a local Functions project from source control, the project doesn't have a local.settings.json file. В этом случае необходимо вручную создать local.settings.jsдля файла в корневом каталоге проекта, чтобы диалоговое окно параметров приложения работала правильно.In this case, you need to manually create the local.settings.json file in the project root so that the Application settings dialog works as expected.

Управление параметрами приложения также можно осуществлять с помощью одного из способов ниже.You can also manage application settings in one of these other ways:

Мониторинг функцийMonitoring functions

Рекомендуемый способ наблюдения за выполнением этой функции — интеграция приложения-функции в Azure Application Insights.The recommended way to monitor the execution of your functions is by integrating your function app with Azure Application Insights. При создании приложения-функции на портале Azure эта интеграция выполняется по умолчанию.When you create a function app in the Azure portal, this integration is done for you by default. Тем не менее при создании приложения-функции во время публикации в Visual Studio интеграция в приложении-функции в Azure не происходит.However, when you create your function app during Visual Studio publishing, the integration in your function app in Azure isn't done. Сведения о подключении Application Insights к приложению функции см. в разделе Включение интеграции Application Insights.To learn how to connect Application Insights to your function app, see Enable Application Insights integration.

Дополнительные сведения о мониторинге с помощью Application Insights см. в статье мониторинг функций Azure.To learn more about monitoring using Application Insights, see Monitor Azure Functions.

Дальнейшие действияNext steps

Дополнительные сведения о Azure Functions Core Tools см. в разделе Работа с Azure functions Core Tools.For more information about the Azure Functions Core Tools, see Work with Azure Functions Core Tools.

Дополнительные сведения о разработке функций в виде библиотек классов .NET см. в статье Справочник разработчика C# по функциям Azure.For more information about developing functions as .NET class libraries, see Azure Functions C# developer reference. Здесь также приведены примеры того, как использовать атрибуты для объявления разных типов привязок, поддерживаемых в службе "Функции Azure".This article also links to examples of how to use attributes to declare the various types of bindings supported by Azure Functions.