Visual Studio kullanarak Azure Işlevleri geliştirmeDevelop Azure Functions using Visual Studio

Visual Studio, Azure 'Da sınıf kitaplığı işlevleri geliştirmenize, C# test etmenize ve dağıtmanıza olanak sağlar.Visual Studio lets you develop, test, and deploy C# class library functions to Azure. Azure Işlevleri ile ilk kez bu deneyim varsa, Azure işlevleri 'ne girişkonusunda daha fazla bilgi edinebilirsiniz.If this experience is your first with Azure Functions, you can learn more at An introduction to Azure Functions.

Visual Studio, işlevlerinizi geliştirirken aşağıdaki avantajları sağlar:Visual Studio provides the following benefits when develop your functions:

  • Yerel geliştirme bilgisayarınızda işlevleri düzenleyin, derleyin ve çalıştırın.Edit, build, and run functions on your local development computer.
  • Azure Işlevleri projenizi doğrudan Azure 'da yayımlayın ve gerektiğinde Azure kaynakları oluşturun.Publish your Azure Functions project directly to Azure, and create Azure resources as needed.
  • İşlev C# bağlamalarını doğrudan C# kodda bildirmek için öznitelikleri kullanın.Use C# attributes to declare function bindings directly in the C# code.
  • Önceden derlenmiş C# işlevler geliştirin ve dağıtın.Develop and deploy pre-compiled C# functions. Önceden karmaşıklu işlevler, C# komut dosyası tabanlı işlevlerden daha iyi bir soğuk başlama performansı sağlar.Pre-complied functions provide a better cold-start performance than C# script-based functions.
  • Visual Studio geliştirmenin avantajlarından C# yararlanmak için işlevlerinizi ' de kodlayın.Code your functions in C# while having all of the benefits of Visual Studio development.

Bu makalede, Visual Studio kullanarak sınıf kitaplığı işlevleri geliştirmeye C# ve bunları Azure 'da yayımlamaya ilişkin ayrıntılar sağlanmaktadır.This article provides details about how to use Visual Studio to develop C# class library functions and publish them to Azure. Bu makaleyi okuduktan sonra Visual Studio için hızlı başlangıç işlevleri' ni tamamlamalısınız.Before you read this article, you should complete the Functions quickstart for Visual Studio.

Aksi belirtilmediği takdirde, yordamlar ve örnekler Visual Studio 2019 içindir.Unless otherwise noted, procedures and examples shown are for Visual Studio 2019.

ÖnkoşullarPrerequisites

Azure Işlevleri araçları, Visual Studio 'nun Azure geliştirme iş yüküne Visual Studio 2017 ile başlayarak dahildir.Azure Functions Tools is included in the Azure development workload of Visual Studio starting with Visual Studio 2017. Azure geliştirme Iş yükünü Visual Studio yüklemenize eklediğinizden emin olun.Make sure you include the Azure development workload in your Visual Studio installation.

Azure aboneliğinizyoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don't have an Azure subscription, create a free account before you begin.

Azure depolama hesabı gibi ihtiyacınız olan diğer kaynaklar, yayımlama işlemi sırasında aboneliğinizde oluşturulur.Other resources that you need, such as an Azure Storage account, are created in your subscription during the publishing process.

Not

Visual Studio 2017 ' de Azure geliştirme iş yükü, Azure Işlevleri araçlarını ayrı bir uzantı olarak yüklüyor.In Visual Studio 2017, the Azure development workload installs the Azure Functions Tools as a separate extension. Visual Studio 2017 ' yi güncelleştirdiğinizde Azure Işlevleri araçlarının en son sürümünü kullandığınızdan da emin olun.When you update your Visual Studio 2017, also make sure that you are using the most recent version of the Azure Functions tools. Aşağıdaki bölümlerde, Visual Studio 2017 ' de Azure Işlevleri araçları uzantınızı nasıl denetleyen ve (gerekirse) güncelleştiren gösterilmektedir.The following sections show you how to check and (if needed) update your Azure Functions Tools extension in Visual Studio 2017.

Visual Studio 2019 kullanırken lütfen bu bölümü atlayın.Please skip these section when using Visual Studio 2019.

Visual Studio 2017 ' de Araçlar sürümünüzü denetleyinCheck your tools version in Visual Studio 2017

  1. Araçlar menüsünde Uzantılar ve güncelleştirmeler' i seçin.From the Tools menu, choose Extensions and Updates. Yüklü > araçları ' nı genişletin ve Azure işlevleri ve Web işleri Araçları ' nı seçin.Expand Installed > Tools and choose Azure Functions and Web Jobs Tools.

    Işlevler araçları sürümünü doğrulama

  2. Yüklü sürümügöz önünde edin.Note the installed Version. Bu sürümü sürüm notlarındalistelenen en son sürümle karşılaştırabilirsiniz.You can compare this version with the latest version listed in the release notes.

  3. Sürümünüzün eski ise, Visual Studio Araçları aşağıdaki bölümde gösterildiği gibi güncelleştirin.If your version is older, update your tools in Visual Studio as shown in the following section.

Visual Studio 2017 ' de araçlarınızı güncelleştirmeUpdate your tools in Visual Studio 2017

  1. Uzantılar ve güncelleştirmeler Iletişim kutusunda güncelleştirmeler > Visual Studio Market' ni genişletin, Azure işlevleri ve Web işleri araçları ' nı seçin ve Güncelleştir' i seçin.In the Extensions and Updates dialog, expand Updates > Visual Studio Marketplace, choose Azure Functions and Web Jobs Tools and select Update.

    Işlevler araçları sürümünü güncelleştirme

  2. Araçları güncelleştirme yüklendikten sonra Visual Studio Araçları VSIX Yükleyicisi'ni kullanarak güncelleştirme tetikleyiciye kapatın.After the tools update is downloaded, close Visual Studio to trigger the tools update using the VSIX installer.

  3. Yükleyicide başlamak için Tamam ' ı seçin ve ardından araçları güncelleştirmek için değiştirin .In the installer, choose OK to start and then Modify to update the tools.

  4. Güncelleştirme tamamlandıktan sonra, Kapat ' ı seçin ve Visual Studio 'yu yeniden başlatın.After the update is complete, choose Close and restart Visual Studio.

Not

Visual Studio 2019 ve üzeri sürümlerde Azure Işlevleri araçları uzantısı, Visual Studio 'nun bir parçası olarak güncelleştirilir.In Visual Studio 2019 and later, the Azure Functions tools extension is updated as part of Visual Studio.

Azure İşlevleri projesi oluşturmaCreate an Azure Functions project

Visual Studio'daki Azure İşlevleri proje şablonu, Azure'daki bir işlev uygulamasında yayımlanabilen bir proje oluşturur.The Azure Functions project template in Visual Studio creates a project that can be published to a function app in Azure. İşlevleri, kaynakların daha kolay yönetilmesi, dağıtılması, ölçeklendirilmesi ve paylaşılması için mantıksal birim olarak gruplamak üzere bir işlev uygulaması kullanabilirsiniz.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 'da, Dosya menüsünde Yeni > projesi' ni seçin.In Visual Studio, on the File menu, select New > Project.

  2. Yeni proje oluştur iletişim kutusunda functionsarayın, Azure işlevleri şablonunu seçin ve İleri' yi seçin.In the Create a new project dialog box, search for functions, choose the Azure Functions template, and select Next.

  3. Projeniz için bir ad girin ve Oluştur' u seçin.Enter a name for your project, and select Create. İşlev uygulamasının adı, bir C# ad alanı olarak geçerli olmalıdır; bu nedenle alt çizgi, kısa çizgi veya alfasayısal olmayan herhangi bir karakter kullanmayın.The function app name must be valid as a C# namespace, so don't use underscores, hyphens, or any other nonalphanumeric characters.

  4. Yeni bir Azure işlevleri uygulaması oluşturbölümünde aşağıdaki seçenekleri kullanın:In Create a new Azure Functions application, use the following options:

    • Azure Işlevleri v2 (.NET Core)Azure Functions v2 (.NET Core)
    • HTTP tetikleyicisiHTTP trigger
    • Depolama hesabı: depolama öykünücüsüStorage Account: Storage Emulator
    • Yetkilendirme düzeyi: anonimAuthorization level: Anonymous
    SeçenekOption Önerilen değerSuggested value AçıklamaDescription
    İşlevler çalışma zamanıFunctions runtime Azure Işlevleri 2. x
    (.NET Core)
    Azure Functions 2.x
    (.NET Core)
    Bu ayar, .NET Core 'u destekleyen Azure Işlevlerinin sürüm 2. x çalışma zamanını kullanan bir işlev projesi oluşturur.This setting creates a function project that uses the version 2.x runtime of Azure Functions, which supports .NET Core. Azure İşlevleri 1.x, .NET Framework’ü destekler.Azure Functions 1.x supports the .NET Framework. Daha fazla bilgi için bkz. hedef Azure işlevleri çalışma zamanı sürümü.For more information, see Target Azure Functions runtime version.
    İşlev şablonuFunction template HTTP tetikleyicisiHTTP trigger Bu ayar, bir HTTP isteği tarafından tetiklenen bir işlev oluşturur.This setting creates a function triggered by an HTTP request.
    Depolama HesabıStorage Account Depolama öykünücüsüStorage Emulator HTTP tetikleyicisi, Azure depolama hesabı bağlantısını kullanmaz.An HTTP trigger doesn't use the Azure Storage account connection. Diğer tüm tetikleyici türleri için geçerli bir Depolama hesabı bağlantı dizesi gerekir.All other trigger types require a valid Storage account connection string. Işlevler bir depolama hesabı gerektirdiğinden, projenizi Azure 'da yayımladığınızda bir tane atanır veya oluşturulur.Because Functions requires a storage account, one is assigned or created when you publish your project to Azure.
    Yetkilendirme düzeyiAuthorization level DeðeriAnonymous Oluşturulan işlev, anahtar gerektirmeden herhangi bir istemci tarafından tetiklenebilir.The created function can be triggered by any client without providing a key. Bu yetkilendirme ayarı yeni işlevinizi test etmenizi kolaylaştırır.This authorization setting makes it easy to test your new function. Anahtarlar ve yetkilendirme hakkında daha fazla bilgi için, HTTP ve web kancası bağlamaları altında Yetkilendirme anahtarları bölümüne bakın.For more information about keys and authorization, see Authorization keys in the HTTP and webhook bindings.

    Not

    Yetkilendirme düzeyini Anonymousolarak ayarladığınızdan emin olun.Make sure you set the Authorization level to Anonymous. Varsayılan Functiondüzeyini seçerseniz, işlev uç noktanıza erişmek için isteklerde işlev anahtarı sunmak gerekir.If you choose the default level of Function, you're required to present the function key in requests to access your function endpoint.

  5. İşlev projesi ve HTTP ile tetiklenen işlev oluşturmak için Oluştur ' u seçin.Select Create to create the function project and HTTP-triggered function.

Proje şablonu bir C# proje oluşturur, Microsoft.NET.Sdk.Functions NuGet paketini yüklerse ve hedef Framework 'ü ayarlar.The project template creates a C# project, installs the Microsoft.NET.Sdk.Functions NuGet package, and sets the target framework. Yeni proje aşağıdaki dosyalara sahiptir:The new project has the following files:

  • Host. JSON: işlevler konağını yapılandırmanızı sağlar.host.json: Lets you configure the Functions host. Bu ayarlar, hem yerel olarak hem de Azure 'da çalışırken geçerlidir.These settings apply both when running locally and in Azure. Daha fazla bilgi için bkz. Host. JSON başvurusu.For more information, see host.json reference.

  • Local. Settings. JSON: işlevleri yerel olarak çalıştırırken kullanılan ayarları tutar.local.settings.json: Maintains settings used when running functions locally. Bu ayarlar, Azure 'da çalışırken kullanılmaz.These settings aren't used when running in Azure. Daha fazla bilgi için bkz. yerel ayarlar dosyası.For more information, see Local settings file.

    Önemli

    Local. Settings. JSON dosyası gizli dizileri içerebildiğinden, bunu proje kaynak denetiinizden dışmalısınız.Because the local.settings.json file can contain secrets, you must excluded it from your project source control. Bu dosya için Çıkış Dizinine Kopyala ayarı, daha yeniyseher zaman kopya olmalıdır.The Copy to Output Directory setting for this file should always be Copy if newer.

Daha fazla bilgi için bkz. işlevler sınıf kitaplığı projesi.For more information, see Functions class library project.

Yerel ayarlar dosyasıLocal settings file

Local. Settings. JSON dosyası, uygulama ayarlarını, bağlantı dizelerini ve yerel geliştirme araçları tarafından kullanılan ayarları depolar.The local.settings.json file stores app settings, connection strings, and settings used by local development tools. Local. Settings. JSON dosyasındaki ayarlar yalnızca projeleri yerel olarak çalıştırırken kullanılır.Settings in the local.settings.json file are used only when you're running projects locally. Yerel ayarlar dosyası bu yapıya sahiptir: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>"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Projeleri yerel olarak çalıştırdığınızda bu ayarlar desteklenir:These settings are supported when you run projects locally:

AyarSetting AçıklamaDescription
IsEncrypted Bu ayar trueolarak ayarlandığında, tüm değerler yerel makine anahtarıyla şifrelenir.When this setting is set to true, all values are encrypted with a local machine key. func settings komutlarıyla birlikte kullanılır.Used with func settings commands. Varsayılan değer false.Default value is false.
Values Bir proje yerel olarak çalışırken kullanılan uygulama ayarları ve bağlantı dizeleri dizisi.Array of application settings and connection strings used when a project is running locally. Bu anahtar-değer (dize-dize) çiftleri, AzureWebJobsStoragegibi Azure 'daki işlev uygulamanızda uygulama ayarlarına karşılık gelir.These key-value (string-string) pairs correspond to application settings in your function app in Azure, like AzureWebJobsStorage. Birçok tetikleyici ve bağlamanın, BLOB depolama tetikleyicisiiçin Connection gibi bir bağlantı dizesi uygulama ayarına başvuran bir özelliği vardır.Many triggers and bindings have a property that refers to a connection string app setting, like Connection for the Blob storage trigger. Bu özellikler için Values dizisinde tanımlanmış bir uygulama ayarı gereklidir.For these properties, you need an application setting defined in the Values array.
AzureWebJobsStorage , http dışındaki Tetikleyiciler için gerekli bir uygulama ayarıdır.AzureWebJobsStorage is a required app setting for triggers other than HTTP.
Işlevler çalışma zamanının 2. x ve üzeri sürümleri için, temel araçlar tarafından projeniz için oluşturulan [FUNCTIONS_WORKER_RUNTIME] ayarı gereklidir.Version 2.x and higher of the Functions runtime requires the [FUNCTIONS_WORKER_RUNTIME] setting, which is generated for your project by Core Tools.
Azure Storage öykünücüsü yerel olarak yüklüyse ve AzureWebJobsStorage UseDevelopmentStorage=trueayarlarsanız, çekirdek araçlar öykünücüyü kullanır.When you have the Azure storage emulator installed locally and you set AzureWebJobsStorage to UseDevelopmentStorage=true, Core Tools uses the emulator. Öykünücü geliştirme sırasında faydalıdır, ancak dağıtımdan önce gerçek bir depolama bağlantısı ile test etmeniz gerekir.The emulator is useful during development, but you should test with an actual storage connection before deployment.
Değerler dize olmalıdır ve JSON nesneleri veya dizileri olmamalıdır.Values must be strings and not JSON objects or arrays. Ayar adları iki nokta (:) veya çift alt çizgi (__) içeremez.Setting names can't include a colon (:) or a double underline (__). Bu karakterler çalışma zamanı tarafından ayrılmıştır.These characters are reserved by the runtime.
Host Bu bölümdeki ayarlar, projeleri yerel olarak çalıştırdığınızda Işlevler ana bilgisayar işlemini özelleştirir.Settings in this section customize the Functions host process when you run projects locally. Bu ayarlar, Azure 'da projeler çalıştırdığınızda da uygulanan Host. JSON ayarlarından ayrıdır.These settings are separate from the host.json settings, which also apply when you run projects in Azure.
LocalHttpPort Yerel Işlevler Konağı (func host start ve func run) çalıştırılırken kullanılan varsayılan bağlantı noktasını ayarlar.Sets the default port used when running the local Functions host (func host start and func run). --port komut satırı seçeneği bu ayarın üzerine gelir.The --port command-line option takes precedence over this setting.
CORS , Çıkış noktaları arası kaynak paylaşımı (CORS)için izin verilen kaynakları tanımlar.Defines the origins allowed for cross-origin resource sharing (CORS). Kaynaklar, boşluk olmadan virgülle ayrılmış bir liste olarak sağlanır.Origins are supplied as a comma-separated list with no spaces. Joker karakter değeri (*) desteklenir ve bu, herhangi bir kaynaktan gelen isteklere izin verir.The wildcard value (*) is supported, which allows requests from any origin.
CORSCredentials trueolarak ayarlandığında withCredentials isteklere izin verir.When set to true, allows withCredentials requests.
ConnectionStrings Bir koleksiyon.A collection. İşlev bağlamalarınız tarafından kullanılan bağlantı dizeleri için bu koleksiyonu kullanmayın.Don't use this collection for the connection strings used by your function bindings. Bu koleksiyon, genellikle Entity Frameworkgibi bir yapılandırma dosyasının ConnectionStrings bölümünden bağlantı dizelerini alan çerçeveler tarafından kullanılır.This collection is used only by frameworks that typically get connection strings from the ConnectionStrings section of a configuration file, like Entity Framework. Bu nesnedeki bağlantı dizeleri System. Data. SqlClientsağlayıcı türüyle ortama eklenir.Connection strings in this object are added to the environment with the provider type of System.Data.SqlClient. Bu koleksiyondaki öğeler, diğer uygulama ayarlarıyla Azure 'da yayımlanmaz.Items in this collection aren't published to Azure with other app settings. Bu değerleri, işlev uygulaması ayarlarınızın Connection strings koleksiyonuna açıkça eklemeniz gerekir.You must explicitly add these values to the Connection strings collection of your function app settings. İşlev kodunuzda bir SqlConnection oluşturuyorsanız, bağlantı dizesi değerini portaldaki uygulama ayarları ' nda diğer bağlantılarınız ile depolamanız gerekir.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.

Projeyi yayımladığınızda yerel. Settings. JSON ayarları otomatik olarak karşıya yüklenemez.Settings in local.settings.json aren't uploaded automatically when you publish the project. Bu ayarların Azure 'daki işlev uygulamanızda da mevcut olduğundan emin olmak için, projenizi yayımladıktan sonra bunları karşıya yüklemeniz gerekir.To make sure that these settings also exist in your function app in Azure, you must upload them after you publish your project. Daha fazla bilgi için bkz. işlev uygulaması ayarları.To learn more, see Function app settings.

ConnectionString içindeki değerler hiçbir şekilde yayımlanmaz.Values in ConnectionStrings are never published.

İşlev uygulaması ayarları değerleri, kodunuzda ortam değişkenleri olarak da okunabilir.The function app settings values can also be read in your code as environment variables. Daha fazla bilgi için bkz. ortam değişkenleri.For more information, see Environment variables.

Projeyi yerel geliştirme için yapılandırmaConfigure the project for local development

Işlevler çalışma zamanı, dahili olarak bir Azure depolama hesabı kullanır.The Functions runtime uses an Azure Storage account internally. HTTP ve Web kancaları dışındaki tüm tetikleyici türleri için values. AzureWebJobsStorage anahtarını geçerli bir Azure depolama hesabı bağlantı dizesine ayarlamanız gerekir.For all trigger types other than HTTP and webhooks, you must set the Values.AzureWebJobsStorage key to a valid Azure Storage account connection string. İşlev uygulamanız, proje için gerekli olan AzureWebJobsStorage bağlantı ayarı için Azure Storage öykünücüsü 'nü de kullanabilir.Your function app can also use the Azure storage emulator for the AzureWebJobsStorage connection setting that is required by the project. Öykünücüyü kullanmak için AzureWebJobsStorage değerini UseDevelopmentStorage=trueolarak ayarlayın.To use the emulator, set the value of AzureWebJobsStorage to UseDevelopmentStorage=true. Dağıtımdan önce bu ayarı gerçek bir depolama hesabı bağlantı dizesiyle değiştirin.Change this setting to an actual storage account connection string before deployment.

Depolama hesabı bağlantı dizesini ayarlamak için:To set the storage account connection string:

  1. Visual Studio 'da Cloud Explorer'ı açın, depolama hesabı > depolama hesabı 'genişletin, ardından Özellikler sekmesinde birincil bağlantı dizesi değerini kopyalayın.In Visual Studio, open Cloud Explorer, expand Storage Account > Your Storage Account, then in the Properties tab copy the Primary Connection String value.

  2. Projenizde, Local. Settings. json dosyasını açın ve AzureWebJobsStorage anahtarının değerini kopyaladığınız bağlantı dizesine ayarlayın.In your project, open the local.settings.json file and set the value of the AzureWebJobsStorage key to the connection string you copied.

  3. İşlevlerinizin gerektirdiği diğer tüm bağlantılar için Values dizisine benzersiz anahtarlar eklemek için önceki adımı tekrarlayın.Repeat the previous step to add unique keys to the Values array for any other connections required by your functions.

Projenize bir işlev ekleyinAdd a function to your project

C# Sınıf kitaplığı işlevlerinde, işlev tarafından kullanılan bağlamalar koddaki öznitelikler uygulanarak tanımlanır.In C# class library functions, the bindings used by the function are defined by applying attributes in the code. İşlev tetiklerinizi, belirtilen şablonlardan oluşturduğunuzda, tetikleyici öznitelikleri sizin için uygulanır.When you create your function triggers from the provided templates, the trigger attributes are applied for you.

  1. Çözüm Gezgini’nde, proje düğümünüze sağ tıklayın ve Yeni > Öğe Ekle’yi seçin.In Solution Explorer, right-click on your project node and select Add > New Item. Azure işlevi' ni seçin, sınıf Için bir ad yazın ve Ekle' ye tıklayın.Select Azure Function, type a Name for the class, and click Add.

  2. Tetikleyiciyi seçin, bağlama özelliklerini ayarlayın ve Oluştur' a tıklayın.Choose your trigger, set the binding properties, and click Create. Aşağıdaki örnek, kuyruk depolama tarafından tetiklenen bir işlev oluşturulurken ayarları gösterir.The following example shows the settings when creating a Queue storage triggered function.

    Kuyruğa geçirilmiş bir işlev oluşturma

    Bu tetikleyici örneği, Queuesstorageadlı bir anahtarla bağlantı dizesi kullanır.This trigger example uses a connection string with a key named QueueStorage. Bu bağlantı dizesi ayarı yerel. Settings. json dosyasındatanımlanmalıdır.This connection string setting must be defined in the local.settings.json file.

  3. Yeni eklenen sınıfı inceleyin.Examine the newly added class. Fonksiyonadı özniteliğiyle nitelendirilen bir statik Run yöntemi görürsünüz.You see a static Run method, that is attributed with the FunctionName attribute. Bu öznitelik, yönteminin işlevin giriş noktası olduğunu gösterir.This attribute indicates that the method is the entry point for the function.

    Örneğin, aşağıdaki C# sınıf temel bir sıra depolama tetiklenen işlevi temsil eder:For example, the following C# class represents a basic Queue storage triggered 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}");
            }
        }
    }
    

    Giriş noktası yöntemine sağlanan her bağlama parametresine bağlamaya özgü bir öznitelik uygulanır.A binding-specific attribute is applied to each binding parameter supplied to the entry point method. Öznitelik, bağlama bilgilerini parametre olarak alır.The attribute takes the binding information as parameters. Önceki örnekte, ilk parametrenin bir Queuetrigger özniteliği uygulanmış ve Queue tetiklenen işlevi olduğunu gösterir.In the previous example, the first parameter has a QueueTrigger attribute applied, indicating queue triggered function. Sıra adı ve bağlantı dizesi ayarı adı, Queuetrigger özniteliğine parametre olarak geçirilir.The queue name and connection string setting name are passed as parameters to the QueueTrigger attribute. Daha fazla bilgi için bkz. Azure Için Azure kuyruk depolama bağlamaları işlevleri.For more information, see Azure Queue storage bindings for Azure Functions.

İşlev uygulaması projenize daha fazla işlev eklemek için yukarıdaki yordamı kullanabilirsiniz.You can use the above procedure to add more functions to your function app project. Projedeki her bir işlev farklı bir tetikleyicisine sahip olabilir, ancak bir işlevin tam olarak bir tetikleyicisi olmalıdır.Each function in the project can have a different trigger, but a function must have exactly one trigger. Daha fazla bilgi için bkz. Azure işlevleri Tetikleyicileri ve bağlamaları kavramları.For more information, see Azure Functions triggers and bindings concepts.

Bağlama eklemeAdd bindings

Tetikleyiciler 'de olduğu gibi, giriş ve çıkış bağlamaları işlevinizde bağlama öznitelikleri olarak eklenir.As with triggers, input and output bindings are added to your function as binding attributes. Bir işleve şu şekilde bağlama ekleyin:Add bindings to a function as follows:

  1. Projeyi yerel geliştirme için yapılandırdığınızdanemin olun.Make sure you've configured the project for local development.

  2. Belirli bağlama için uygun NuGet uzantı paketini ekleyin.Add the appropriate NuGet extension package for the specific binding. Daha fazla bilgi için Tetikleyiciler ve bağlamalar makalesindeki Visual Studio 'yu kullanarak C# yerel geliştirme bölümüne bakın.For more information, see Local C# development using Visual Studio in the Triggers and Bindings article. Bağlamaya özgü NuGet paketi gereksinimleri, bağlamanın başvuru makalesinde bulunur.The binding-specific NuGet package requirements are found in the reference article for the binding. Örneğin, Event Hubs bağlama başvurusu makalesindekiEvent Hubs tetikleyicisinin paket gereksinimlerini bulun.For example, find package requirements for the Event Hubs trigger in the Event Hubs binding reference article.

  3. Bağlamanın ihtiyacı olan uygulama ayarları varsa, bunları yerel ayar dosyasındaki değerler koleksiyonuna ekleyin.If there are app settings that the binding needs, add them to the Values collection in the local setting file. Bu değerler, işlev yerel olarak çalıştırıldığında kullanılır.These values are used when the function runs locally. İşlev, Azure 'daki işlev uygulamasında çalıştırıldığında, işlev uygulama ayarları kullanılır.When the function runs in the function app in Azure, the function app settings are used.

  4. Yöntem imzasına uygun bağlama özniteliğini ekleyin.Add the appropriate binding attribute to the method signature. Aşağıdaki örnekte, bir kuyruk iletisi işlevi tetikler ve çıkış bağlaması farklı bir kuyrukta aynı metne sahip yeni bir kuyruk iletisi oluşturur.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;
        }
    }
    

    Kuyruk depolama bağlantısı AzureWebJobsStorage ayarından elde edilir.The connection to Queue storage is obtained from the AzureWebJobsStorage setting. Daha fazla bilgi için, belirli bağlama yönelik başvuru makalesine bakın.For more information, see the reference article for the specific binding.

Bu tabloda, Azure Işlevleri çalışma zamanının ana sürümlerinde desteklenen bağlamalar gösterilmektedir:This table shows the bindings that are supported in the major versions of the Azure Functions runtime:

TürType 'in1.x 2. x ve üzeri12.x and higher1 TetikleyiciTrigger GirdiInput ÇıktıOutput
Blob depolamaBlob storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
HTTP & Web kancalarıHTTP & webhooks
IoT Hub’ıIoT Hub
Microsoft Graph
Excel tabloları
Microsoft Graph
Excel tables
OneDrive dosyalarını
Microsoft Graph
Microsoft Graph
OneDrive files
Microsoft Graph
Outlook e-postası
Microsoft Graph
Outlook email
Microsoft Graph
olayları
Microsoft Graph
events
Microsoft Graph
kimlik doğrulama belirteçleri
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Kuyruk depolamaQueue storage
SendGridSendGrid
Service BusService Bus
SignalRSignalR
Tablo depolamaTable storage
ZamanlayıcıTimer
TwilioTwilio

1 sürüm 2. x çalışma zamanı ile başlayarak, http ve Zamanlayıcı hariç tüm bağlamaların kayıtlı olması gerekir.1 Starting with the version 2.x runtime, all bindings except HTTP and Timer must be registered. Bkz. bağlama uzantılarını kaydetme.See Register binding extensions.

İşlevleri test etmeTesting functions

Azure İşlevleri Temel Araçları, Azure İşlevleri projenizi yerel geliştirme bilgisayarınızda çalıştırmanıza olanak sağlar.Azure Functions Core Tools lets you run Azure Functions project on your local development computer. Visual Studio'da ilk kez bir işlev başlattığınızda bu araçları yüklemeniz istenir.You are prompted to install these tools the first time you start a function from Visual Studio.

İşlevinizi test etmek için F5’e basın.To test your function, press F5. İstenirse Visual Studio'dan gelen Azure İşlevleri Temel (CLI) araçlarını indirme ve yükleme isteğini kabul edin.If prompted, accept the request from Visual Studio to download and install Azure Functions Core (CLI) tools. Aracın HTTP isteklerini işleyebilmesi için bir güvenlik duvarı özel durumu etkinleştirmeniz de gerekebilir.You may also need to enable a firewall exception so that the tools can handle HTTP requests.

Çalıştıran proje ile kodunuzu test dağıtılan işlev olarak test edebilirsiniz.With the project running, you can test your code as you would test deployed function. Daha fazla bilgi için bkz. Azure işlevlerinde kodunuzu test etme stratejileri.For more information, see Strategies for testing your code in Azure Functions. Hata ayıklama modunda çalışırken, kesme noktaları, Visual Studio 'Nun beklendiği şekilde isabet ediyor.When running in debug mode, breakpoints are hit in Visual Studio as expected.

Azure Functions Core Tools kullanma hakkında daha fazla bilgi edinmek için bkz. Azure işlevlerini yerel olarak testetme.To learn more about using the Azure Functions Core Tools, see Code and test Azure functions locally.

Azure’da YayımlamaPublish to Azure

Visual Studio 'dan yayımlarken, iki dağıtım yönteminden biri kullanılır:When publishing from Visual Studio, one of two deployment methods are used:

Projenizi Azure 'da bir işlev uygulamasına yayımlamak için aşağıdaki adımları kullanın.Use the following steps to publish your project to a function app in Azure.

  1. Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.In Solution Explorer, right-click the project and select Publish.

  2. Bir yayımlama hedefi seçin iletişim kutusunda, görüntünün altındaki tabloda belirtilen Yayımla seçeneklerini kullanın:In the Pick a publish target dialog, use the publish options as specified in the table below the image:

    Yayımlama hedefi seçme

    SeçenekOption AçıklamaDescription
    Azure Işlevleri tüketim planıAzure Functions Consumption plan Projenizi bir Tüketim planındaçalışan bir işlev uygulamasında yayımladığınızda yalnızca işlevler uygulamanızın yürütmeleri için ödeme yaparsınız.When you publish your project to a function app that runs in a Consumption plan, you only pay for executions of your functions app. Diğer barındırma planları daha yüksek maliyetler doğurur.Other hosting plans incur higher costs. Daha fazla bilgi için bkz. Azure işlevleri ölçeklendirme ve barındırma.To learn more, see Azure Functions scale and hosting.
    Yeni oluşturCreate new Azure 'da, ilgili kaynaklarla yeni bir işlev uygulaması oluşturulur.A new function app, with related resources, is created in Azure. Varolanı Seç'i seçtiğinizde, yerel projedeki dosyalar Azure'da mevcut işlev uygulamasındaki tüm dosyaların üzerine yazılır.When you choose Select Existing, all files in the existing function app in Azure are overwritten by files from the local project. Bu seçeneği yalnızca mevcut işlev uygulamasına yeniden güncelleştirme yayımlarken kullanın.Only use this option when republishing updates to an existing function app.
    Paket dosyasından ÇalıştırRun from package file İşlev uygulamanız, paket Çalıştır modu etkin olan ZIP dağıtımı kullanılarak dağıtılır.Your function app is deployed using Zip Deploy with Run-From-Package mode enabled. Bu, işlevlerinizi çalıştırmanın önerilen yoludur ve daha iyi performans elde edilir.This is the recommended way of running your functions, which results in better performance. Bu seçeneği kullanmadığınız durumlarda, Azure 'da yayımlamadan önce işlev uygulaması projenizin yerel olarak çalışmasını durdurduğunuzdan emin olun.When not using this option, make sure to stop your function app project from running locally before you publish to Azure.
  3. Yayımla’yı seçin.Select Publish. Visual Studio 'dan Azure hesabınızda zaten oturum açmadıysanız oturum aç' ı seçin.If you haven't already signed-in to your Azure account from Visual Studio, select Sign-in. Ayrıca, ücretsiz bir Azure hesabı da oluşturabilirsiniz.You can also create a free Azure account.

  4. Azure App Service: Yeni oluştur iletişim kutusunda, görüntünün altındaki tabloda belirtilen barındırma ayarlarını kullanın:In the Azure App Service: Create new dialog, use the Hosting settings as specified in the table below the image:

    App Service iletişim kutusu oluşturma

    AyarSetting Önerilen değerSuggested value AçıklamaDescription
    AdıName Genel olarak benzersiz bir adGlobally unique name Yeni işlev uygulamanızı benzersiz şekilde tanımlayan ad.Name that uniquely identifies your new function app. Geçerli karakterler: a-z, 0-9, ve -.Valid characters are a-z, 0-9, and -.
    AbonelikSubscription Aboneliğinizi seçinChoose your subscription Kullanılacak Azure aboneliği.The Azure subscription to use.
    Kaynak GrubuResource Group myResourceGroupmyResourceGroup İşlev uygulamanızın oluşturulacağı kaynak grubunun adı.Name of the resource group in which to create your function app. Yeni kaynak grubu oluşturmak Yeni'yi seçin.Choose New to create a new resource group.
    Barındırma planıHosting Plan Tüketim planıConsumption plan Sunucusuz bir plan oluşturmak için Yeni ' yi seçtikten sonra Boyut ' un altında tüketimi seçtiğinizden emin olun.Make sure to choose the Consumption under Size after you select New to create a serverless plan. Ayrıca, kendinize veya işlevlerinizin erişeceği diğer hizmetlere yakın bir bölgede yer alan bir Konum seçin.Also, choose a Location in a region near you or near other services your functions access. Tüketim dışında bir planda çalıştırdığınızda, işlev uygulamanızın ölçeklendirmesini yönetmelisiniz.When you run in a plan other than Consumption, you must manage the scaling of your function app.
    Azure DepolamaAzure Storage Genel amaçlı depolama hesabıGeneral-purpose storage account İşlevler çalışma zamanı için bir Azure depolama hesabı gereklidir.An Azure storage account is required by the Functions runtime. Genel amaçlı bir depolama hesabı oluşturmak için Yeni ' yi seçin.Select New to create a general-purpose storage account. Dilerseniz depolama hesabı gereksinimlerini karşılayan mevcut bir hesap da kullanabilirsiniz.You can also use an existing account that meets the storage account requirements.
  5. Azure 'da bu ayarlarla bir işlev uygulaması ve ilgili kaynaklar oluşturmak ve işlev proje kodunuzu dağıtmak için Oluştur ' u seçin.Select Create to create a function app and related resources in Azure with these settings and deploy your function project code.

  6. Dağıtım tamamlandığında, Site URL'si değerini (Azure'daki işlev uygulamanızın adresi) not edin.After the deployment is complete, make a note of the Site URL value, which is the address of your function app in Azure.

    Başarı iletisi yayımlama

İşlev uygulaması ayarlarıFunction app settings

Yerel. Settings. JSON içine eklediğiniz tüm ayarlar ayrıca Azure 'daki işlev uygulamasına eklenmelidir.Any settings you added in the local.settings.json must be also added to the function app in Azure. Projeyi yayımladığınızda bu ayarlar otomatik olarak karşıya yüklenemez.These settings aren't uploaded automatically when you publish the project.

Gerekli ayarları Azure 'daki işlev uygulamanıza yüklemenin en kolay yolu, projenizi başarıyla yayımladıktan sonra görüntülenen uygulama ayarlarını yönet... bağlantısını kullanmaktır.The easiest way to upload the required settings to your function app in Azure is to use the Manage Application Settings... link that is displayed after you successfully publish your project.

Bu, yeni uygulama ayarları ekleyebileceğiniz veya var olanları değiştirebileceğiniz işlev uygulaması için uygulama ayarları iletişim kutusunu görüntüler.This displays the Application Settings dialog for the function app, where you can add new application settings or modify existing ones.

Local , yerel. Settings. JSON dosyasındaki bir ayar değerini temsil eder ve uzak , Azure 'daki işlev uygulamasındaki geçerli ayardır.Local represents a setting value in the local.settings.json file, and Remote is the current setting in the function app in Azure. Yeni bir uygulama ayarı oluşturmak için Ayar ekle ' yi seçin.Choose Add Setting to create a new app setting. Bir ayar değerini uzak alana kopyalamak için Yerel bağlantıdan Ekle değerini kullanın.Use the Insert value from Local link to copy a setting value to the Remote field. Bekleyen değişiklikler, Tamam' ı seçtiğinizde yerel ayarlar dosyasına ve işlev uygulamasına yazılır.Pending changes are written to the local settings file and the function app when you select OK.

Not

Varsayılan olarak, Local. Settings. JSON dosyası kaynak denetimine iade edilmez.By default, the local.settings.json file is not checked into source control. Bu, kaynak denetiminden yerel bir Işlevler projesi kopyaladığınızda, projenin bir Local. Settings. JSON dosyasına sahip olmadığı anlamına gelir.This means that when you clone a local Functions project from source control, the project doesn't have a local.settings.json file. Bu durumda, uygulama ayarları iletişim kutusunun beklendiği gibi çalışması için, proje kökünde yerel. Settings. json dosyasını el ile oluşturmanız gerekir.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.

Ayrıca, uygulama ayarlarını şu diğer yollarla da yönetebilirsiniz:You can also manage application settings in one of these other ways:

İzleme işlevleriMonitoring functions

İşlevlerinizin yürütülmesini izlemek için önerilen yol, işlev uygulamanızı Azure Application Insights ile tümleştirerek yapılır.The recommended way to monitor the execution of your functions is by integrating your function app with Azure Application Insights. Azure portal bir işlev uygulaması oluşturduğunuzda, bu tümleştirme varsayılan olarak sizin için yapılır.When you create a function app in the Azure portal, this integration is done for you by default. Ancak, Visual Studio yayımlama sırasında işlev uygulamanızı oluşturduğunuzda, Azure 'daki işlev uygulamanızda tümleştirme yapılmaz.However, when you create your function app during Visual Studio publishing, the integration in your function app in Azure isn't done.

İşlev uygulamanız için Application Insights etkinleştirmek için:To enable Application Insights for your function app:

İşlevler, Azure Portalbir işlev uygulamasına Application Insights tümleştirme eklemeyi kolaylaştırır.Functions makes it easy to add Application Insights integration to a function app from the Azure portal.

  1. Portal tüm hizmetler > işlev uygulamaları' nı seçin, işlev uygulamanızı seçin ve ardından pencerenin üst kısmındaki Application Insights başlığını seçinIn the portal, select All services > Function Apps, select your function app, and then select the Application Insights banner at the top of the window

    Portaldan Application Insights etkinleştirme

  2. Görüntünün altındaki tabloda belirtilen ayarları kullanarak bir Application Insights kaynağı oluşturun.Create an Application Insights resource by using the settings specified in the table below the image.

    Application Insights kaynağı oluşturma

    AyarSetting Önerilen değerSuggested value AçıklamaDescription
    NameName Benzersiz uygulama adıUnique app name Kendi aboneliğinizde benzersiz olması gereken işlev uygulamanız ile aynı adı kullanmak en kolay yoldur.It's easiest to use the same name as your function app, which must be unique in your subscription.
    LocationLocation Batı AvrupaWest Europe Mümkünse, işlev uygulamanız ile aynı bölgeyi veya bu bölgeye yakın olanı kullanın.If possible, use the same region as your function app, or one that's close to that region.
  3. Tamam’ı seçin.Select OK. Application Insights kaynak, işlev uygulamanız ile aynı kaynak grubunda ve abonelikte oluşturulur.The Application Insights resource is created in the same resource group and subscription as your function app. Kaynak oluşturulduktan sonra Application Insights penceresini kapatın.After the resource is created, close the Application Insights window.

  4. İşlev uygulamanıza geri dönün, uygulama ayarları' nı seçin ve ardından uygulama ayarları' na kaydırın.Back in your function app, select Application settings, and then scroll down to Application settings. Adlı APPINSIGHTS_INSTRUMENTATIONKEYbir ayar görürseniz, Azure 'da çalışan işlev uygulamanız için Application Insights tümleştirme etkinleştirilir.If you see a setting named APPINSIGHTS_INSTRUMENTATIONKEY, Application Insights integration is enabled for your function app running in Azure.

Daha fazla bilgi için bkz. Azure Işlevlerini izleme.To learn more, see Monitor Azure Functions.

Sonraki adımlarNext steps

Azure Functions Core Tools hakkında daha fazla bilgi edinmek için bkz. Azure işlevlerine yerel olarak kod ve testetme.To learn more about the Azure Functions Core Tools, see Code and test Azure functions locally.

.NET sınıf kitaplıkları olarak işlevleri geliştirme hakkında daha fazla bilgi için bkz. Azure C# işlevleri geliştirici başvurusu.To learn more about developing functions as .NET class libraries, see Azure Functions C# developer reference. Bu makale ayrıca, Azure Işlevleri tarafından desteklenen çeşitli tür bağlamaları bildirmek üzere özniteliklerin nasıl kullanılacağına dair örneklere bağlantı sağlar.This article also links to examples of how to use attributes to declare the various types of bindings supported by Azure Functions.