Aracılığıyla paylaş


Öğretici: Olay odaklı arka plan işleme için Azure Webjobs SDK'sını kullanmaya başlama

Web uygulamalarınızın arka plan görevlerini, zamanlanmış görevleri çalıştırmasını ve olaylara yanıt vermesini sağlamak üzere Azure Uygulaması Hizmeti için Azure Web İşleri SDK'sını kullanmaya başlayın.

Azure Depolama Kuyruğu iletilerine yanıt vermek, projeyi yerel olarak çalıştırmak ve son olarak Azure'a dağıtmak için Web İşleri SDK'sını kullanan bir .NET 8 konsol uygulaması oluşturmak için Visual Studio 2022'yi kullanın.

Bu öğreticide şunların nasıl yapıldığını öğrenirsiniz:

  • Konsol uygulaması oluşturma
  • İşlev ekleme
  • Yerel olarak test edin
  • Azure’a dağıtın
  • Application Insights günlüğünü etkinleştirme
  • Giriş/çıkış bağlamaları ekleme

Önkoşullar

Konsol uygulaması oluşturma

Bu bölümde, Visual Studio 2022'de bir proje oluşturarak başlayacaksınız. Ardından Azure geliştirme, kod yayımlama ve tetikleyicileri ve çağrı işlevlerini dinleyen işlevler için araçlar ekleyeceksiniz. Son olarak, eski bir izleme aracını devre dışı bırakabilen ve varsayılan filtrelemeye sahip bir konsol sağlayıcısını etkinleştiren konsol günlüğünü ayarlayacaksınız.

Not

Bu makaledeki yordamlar.NET 8.0 üzerinde çalışan bir C# konsol uygulaması oluşturmaya yönelik doğrulanmıştır.

Bir proje oluştur

  1. Visual Studio'da Dosya>Yeni Proje'yi> seçin.

  2. Yeni proje oluştur'un altında Konsol Uygulaması (C#) öğesini ve ardından İleri'yi seçin.

  3. Yeni projenizi yapılandırın altında projeyi WebjobsSDKSample olarak adlandırın ve İleri'yi seçin.

  4. Hedef çerçevenizi seçin ve Oluştur'u seçin. Bu öğretici .NET 6.0 kullanılarak doğrulanmıştır.

WebJobs NuGet paketlerini yükleme

En son Webjobs NuGet paketini yükleyin. Bu paket, işlev kodunuzu Azure Uygulaması Hizmeti'nde Webjobs'ta yayımlamanıza olanak tanıyan Microsoft.Azure.WebJobs'u (Webjobs SDK) içerir.

  1. Microsoft.Azure.WebJobs.Extensions NuGet paketinin en son kararlı 4.x sürümünü edinin.

  2. Visual Studio'da Araçlar>NuGet Paket Yöneticisi gidin.

  3. Paket Yöneticisi Konsolu'nu seçin. NuGet cmdlet'lerinin listesini, belge bağlantısını ve PM> giriş noktasını görürsünüz.

  4. Aşağıdaki komutta değerini 1. adımda bulduğunuz geçerli sürüm numarasıyla değiştirin <4_X_VERSION> .

    Install-Package Microsoft.Azure.WebJobs.Extensions -version <4_X_VERSION>
    

    Not

    Bu makaledeki örnek kod, 4.x paket sürümleriyle çalışır. 5.x paket sürümlerini kullanırken derleme hataları aldığınızdan, 4.x sürümünü kullandığınızdan emin olun.

  5. Paket Yöneticisi Konsolu'nda komutunu yürütür. Uzantı listesi görüntülenir ve otomatik olarak yüklenir.

Konağı Oluşturma

Konak, tetikleyicileri dinleyen ve işlevleri çağıran işlevlerin çalışma zamanı kapsayıcısıdır. Aşağıdaki adımlar, ASP.NET Core'daki Genel Ana Bilgisayar olan uygulamasını uygulayan IHostbir konak oluşturur.

  1. Program.cs sekmesini seçin, var olan içeriği kaldırın ve şu using deyimleri ekleyin:

    using System.Threading.Tasks;
    using Microsoft.Extensions.Hosting;
    
  2. Ayrıca Program.cs altına aşağıdaki kodu ekleyin:

    namespace WebJobsSDKSample
    {
        class Program
        {
            static async Task Main()
            {
                var builder = new HostBuilder();
                builder.ConfigureWebJobs(b =>
                {
                    b.AddAzureStorageCoreServices();
                });
                var host = builder.Build();
                using (host)
                {
                    await host.RunAsync();
                }
            }
        }
    }
    

ASP.NET Core'da konak yapılandırmaları örnekteki yöntemler HostBuilder çağrılarak ayarlanır. Daha fazla bilgi için bkz . .NET Genel Ana Bilgisayarı. ConfigureWebJobs Uzantı yöntemi Webjobs konağını başlatır. içinde ConfigureWebJobs, Depolama bağlama uzantısı gibi belirli bağlama uzantılarını başlatın ve bu uzantıların özelliklerini ayarlayın.

Konsol günlüğünü etkinleştirme

ASP.NET Core günlük çerçevesini kullanan konsol günlüğünü ayarlayın. Bu çerçeve olan Microsoft.Extensions.Logging, çeşitli yerleşik ve üçüncü taraf günlük sağlayıcılarıyla çalışan bir API içerir.

  1. NuGet paketinin Microsoft.Extensions.Logging.Consoleiçeren Microsoft.Extensions.Loggingen son kararlı sürümünü alın.

  2. Aşağıdaki komutta değerini 1. adımda bulduğunuz geçerli sürüm numarasıyla değiştirin <9_X_VERSION> . Her NuGet Paketi türünün benzersiz bir sürüm numarası vardır.

    Install-Package Microsoft.Extensions.Logging.Console -version <9_X_VERSION>
    
  3. Paket Yöneticisi Konsolu'nda geçerli sürüm numarasını doldurun ve komutunu yürütür. Uzantı listesi görüntülenir ve otomatik olarak yüklenir.

  4. sekme Program.cs altına şu using deyimi ekleyin:

    using Microsoft.Extensions.Logging;
    
  5. Program.cs altında devam ederek komutunun ConfigureLogging önüne Build yöntemini HostBuilderekleyin. yöntemi yapılandırmaya AddConsole konsol günlüğü ekler.

    builder.ConfigureLogging((context, b) =>
    {
         b.SetMinimumLevel(LogLevel.Error);
         b.AddFilter("Function", LogLevel.Information);
         b.AddFilter("Host", LogLevel.Debug);
         b.AddConsole();
    });
    

    Bu, işlev yürütmeleri Information için düzeydeki günlük çıkışını, düzeydeki konağı Debug ve error diğer tüm bileşenlerin düzeyini yakalayan günlük kaydı ekler. Main Yöntemi şimdi şöyle görünür:

    static async Task Main()
    {
        var builder = new HostBuilder();
        builder.ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
        });
        builder.ConfigureLogging((context, b) =>
        {
            b.SetMinimumLevel(LogLevel.Error);
            b.AddFilter("Function", LogLevel.Information);
            b.AddFilter("Host", LogLevel.Debug);
            b.AddConsole();
        });
        var host = builder.Build();
        using (host)
        {
            await host.RunAsync();
        }
    }
    

    Bu ekleme şu değişiklikleri yapar:

Artık Azure Depolama kuyruğuna gelen iletiler tarafından tetiklenen bir işlev ekleyebilirsiniz.

İşlev ekleme

İşlev, bir zamanlamaya göre çalışan, olaylara göre tetiklenen veya isteğe bağlı olarak çalıştırılacak kod birimidir. Tetikleyici bir hizmet olayını dinler. Web İşleri SDK'sı bağlamında tetiklenen dağıtım moduna başvurmaz. SDK kullanılarak oluşturulan olay temelli veya zamanlanmış Web İşleri her zaman "Always on" etkin sürekli Web İşleri olarak dağıtılmalıdır.

Bu bölümde, Azure Depolama kuyruğundaki iletiler tarafından tetiklenen bir işlev oluşturacaksınız. İlk olarak, Azure Depolama'ya bağlanmak için bir bağlama uzantısı eklemeniz gerekir.

Depolama bağlama uzantısını yükleme

Web İşleri SDK'sının 3. sürümünden başlayarak Azure Depolama hizmetlerine bağlanmak için ayrı bir Depolama bağlama uzantısı paketi yüklemeniz gerekir.

Not

5.x sürümünden itibaren Microsoft.Azure.WebJobs.Extensions.Storage , depolama hizmetine göre bölünmüş ve uzantı yöntemini hizmet türüne AddAzureStorage() göre geçirmiştir. Bu sürüm, SDK tarafından kullanılan derlemenin Microsoft.Azure.WebJobs.Host.Storage sürümünü güncelleştirmenizi de gerektirir.

  1. Microsoft.Azure.WebJobs.Extensions.Storage NuGet paketinin en son kararlı sürümünü, sürüm 5.x'i edinin.

  2. Aşağıdaki komutta değerini 1. adımda bulduğunuz geçerli sürüm numarasıyla değiştirin <5_X_VERSION> . Her NuGet Paketi türünün benzersiz bir sürüm numarası vardır.

    Install-Package Microsoft.Azure.WebJobs.Extensions.Storage -Version <5_X_VERSION>
    
  3. Paket Yöneticisi Konsolu'nda komutu giriş noktasında geçerli sürüm numarasıyla yürütürPM>.

  4. Paketi 4.1.0 sürümüne Microsoft.Azure.WebJobs.Host.Storage güncelleştirmek için de şu komutu çalıştırın:

    Install-Package Microsoft.Azure.WebJobs.Host.Storage -Version 4.1.0
    
  5. Program.cs devam ederek uzantı yöntemindeConfigureWebJobs, Depolama uzantısını AddAzureStorageQueues başlatmak için örnekteki (komut öncesindeBuild) yöntemini HostBuilderekleyin. Bu noktada ConfigureWebJobs yöntemi şöyle görünür:

    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddAzureStorageQueues();
    });
    
  6. örneği eklendikten sonra yöntemine builder aşağıdaki kodu Main ekleyin:

    builder.UseEnvironment(EnvironmentName.Development);
    

    Geliştirme modunda çalıştırmak, çalışma zamanının iletiyi bulması ve işlevi çağırması için gereken süreyi önemli ölçüde geciktirebilen kuyruk yoklamasını üstel geri alma işlemini azaltır. Geliştirme ve test işlemini tamamladığınızda bu kod satırını kaldırmanız veya Production geçiş yapmanız gerekir.

    Main Yöntemi şimdi aşağıdaki örneğe benzer görünmelidir:

    static async Task Main()
    {
        var builder = new HostBuilder();
        builder.UseEnvironment(EnvironmentName.Development);
        builder.ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
            b.AddAzureStorageQueues();
        });
        builder.ConfigureLogging((context, b) =>
        {
            b.SetMinimumLevel(LogLevel.Error);
            b.AddFilter("Function", LogLevel.Information);
            b.AddFilter("Host", LogLevel.Debug);
            b.AddConsole();
        });
        var host = builder.Build();
        using (host)
        {
            await host.RunAsync();
        }
    }
    

Kuyrukla tetiklenen işlev oluşturma

özniteliği, QueueTrigger adlı queuebir Azure Depolama kuyruğuna yeni bir ileti yazıldığında çalışma zamanına bu işlevi çağırmasını söyler. Kuyruk iletisinin içeriği parametresindeki yöntem koduna message sağlanır. Yöntemin gövdesi, tetikleyici verilerini işlediğiniz yerdir. Bu örnekte kod yalnızca iletiyi günlüğe kaydeder.

  1. Çözüm Gezgini projeye sağ tıklayın, Yeni Öğe Ekle'yi>ve ardından Sınıf'ı seçin.

  2. Yeni C# sınıf dosyasını Functions.cs adlandırın ve Ekle'yi seçin.

  3. Functions.cs'da, oluşturulan şablonu aşağıdaki kodla değiştirin:

    using Microsoft.Azure.WebJobs;
    using Microsoft.Extensions.Logging;
    
    namespace WebJobsSDKSample
    {
        public static class Functions
        {
            public static void ProcessQueueMessage([QueueTrigger("queue")] string message, ILogger logger)
            {
                logger.LogInformation(message);
            }
        }
    }
    

    Çalışma zamanının yöntemine erişmesi ve yöntemi yürütmesi için İşlevler sınıfını olarak public static işaretlemeniz gerekir. Yukarıdaki kod örneğinde adlı queuekuyruğa bir ileti eklendiğinde işlev yürütülür ve message dize günlüklere yazılır. İzlenen kuyruk, sonraki adımda oluşturacağınız varsayılan Azure Depolama hesabındadır.

Parametresinin message bir dize olması gerekmez. Ayrıca bir JSON nesnesine, bayt dizisine veya CloudQueueMessage nesnesine de bağlanabilirsiniz. Bkz. Kuyruk tetikleyicisi kullanımı. Her bağlama türünün (kuyruklar, bloblar veya tablolar gibi) bağlanabileceğiniz farklı bir parametre türü kümesi vardır.

Azure Depolama hesabı oluşturma

Yerel olarak çalışan Azure Depolama Öykünücüsü, Web İşleri SDK'sının ihtiyaç duyduğu tüm özelliklere sahip değildir. Azure'da bir depolama hesabı oluşturacak ve projeyi bunu kullanacak şekilde yapılandıracaksınız.

Genel amaçlı v2 depolama hesabı oluşturmayı öğrenmek için bkz . Azure Depolama hesabı oluşturma.

bağlantı dizesi bulun ve kopyalayın

Depolamayı yapılandırmak için bir bağlantı dizesi gerekir. Sonraki adımlar için bu bağlantı dizesi tutun.

  1. Azure portalında depolama hesabınıza gidin ve Ayarlar'ı seçin.

  2. Ayarlar'da Erişim anahtarları'nı seçin.

  3. anahtar1 altındaki Bağlantı dizesi için Panoya kopyala simgesini seçin.

    anahtar

Depolamayı yerel olarak çalışacak şekilde yapılandırma

Web İşleri SDK'sı, Azure'daki Uygulama Ayarları'nda depolama bağlantı dizesi arar. Yerel olarak çalıştırdığınızda, yerel yapılandırma dosyasında veya ortam değişkenlerinde bu değeri arar.

  1. Projeye sağ tıklayın, Yeni Öğe Ekle'yi>seçin, JavaScript JSON yapılandırma dosyasını seçin, yeni dosyayı appsettings.json dosya olarak adlandırın ve Ekle'yi seçin.

  2. Yeni dosyaya, aşağıdaki örnekte olduğu gibi bir AzureWebJobsStorage alan ekleyin:

    {
        "AzureWebJobsStorage": "{storage connection string}"
    }
    
  3. {storage bağlantı dizesi} öğesini daha önce kopyaladığınız bağlantı dizesi değiştirin.

  4. Çözüm Gezgini'da appsettings.json dosyasını seçin ve Özellikler penceresinde Çıkış Dizinine Kopyala eylemini Daha yeniyse Kopyala olarak ayarlayın.

Bu dosya bağlantı dizesi bir gizli dizi içerdiğinden, dosyayı uzak kod deposunda depolamamalısınız. Projenizi Azure'da yayımladıktan sonra, Azure Uygulaması Hizmeti'ndeki uygulamanıza aynı bağlantı dizesi uygulama ayarını ekleyebilirsiniz.

Yerel olarak test edin

Projeyi yerel olarak derleyip çalıştırın ve işlevi tetikleyen bir ileti kuyruğu oluşturun.

  1. Azure portalında depolama hesabınıza gidin ve Kuyruklar sekmesini (1) seçin. + Kuyruk (2) öğesini seçin ve kuyruk adını (3) olarak girin. Ardından Tamam (4) öğesini seçin.

    Bu görüntüde yeni bir Azure Depolama Kuyruğu oluşturma adımları gösterilmektedir.

  2. Yeni kuyruğa tıklayın ve İleti ekle'yi seçin.

  3. İleti Ekle iletişim kutusunda İleti metni olarak Merhaba Dünya! yazın ve Tamam'ı seçin. Artık kuyrukta bir ileti var.

    Kuyruk oluşturma

  4. Projeyi çalıştırmak için Ctrl+F5 tuşlarına basın.

    Konsol, çalışma zamanının işlevinizi bulduğunu gösterir. işlevinde özniteliğini QueueTrigger kullandığınızdan ProcessQueueMessage , Webjobs çalışma zamanı adlı queuekuyruktaki iletileri dinler. Bu kuyrukta yeni bir ileti bulduğunda çalışma zamanı, ileti dizesi değerini geçirerek işlevini çağırır.

  5. Kuyruk penceresine geri dönün ve yenileyin. İleti, yerel olarak çalıştırılan işleviniz tarafından işlendiğinden kayboldu.

  6. Konsol penceresini kapatın veya Ctrl+C yazın.

Artık Web İşleri SDK'sı projenizi Azure'da yayımlamanın zamanı geldi.

Azure’a dağıtın

Dağıtım sırasında, işlevlerinizi çalıştıracağınız bir app service örneği oluşturursunuz. Bir .NET konsol uygulamasını Azure'da App Service'e yayımladığınızda, bu uygulama otomatik olarak Bir Web İşi olarak çalışır. Yayımlama hakkında daha fazla bilgi edinmek için bkz . Visual Studio kullanarak Web İşleri geliştirme ve dağıtma.

Azure kaynakları oluşturma

  1. Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.

  2. Yayımla iletişim kutusunda Hedef için Azure'ıve ardından İleri'yi seçin.

  3. Belirli bir hedef için Azure Web İşleri'ne ve ardından İleri'ye tıklayın.

  4. App Service örneklerinin üstündeki artı (+) düğmesini seçerek Yeni Bir Azure Web İşi oluşturun.

  5. App Service (Windows) iletişim kutusunda, aşağıdaki tabloda yer alan barındırma ayarlarını kullanın.

    Ayar Önerilen değer Veri Akışı Açıklaması
    Adı Genel olarak benzersiz bir ad Yeni işlev uygulamanızı benzersiz şekilde tanımlayan ad.
    Abonelik Aboneliğinizi seçin Kullanılacak Azure aboneliği.
    Kaynak grubu myResourceGroup İşlev uygulamanızın oluşturulacağı kaynak grubunun adı. Yeni kaynak grubu oluşturmak Yeni'yi seçin.
    Barındırma Planı App Service planı App Service planı, uygulamanızı barındıran web sunucusu grubunun konumunu, boyutunu ve özelliklerini belirtir. Web uygulamalarında ortak bir App Service planının kullanılacağı şekilde yapılandırma gerçekleştirerek birden fazla uygulama barındırdığınızda maliyet tasarrufu elde edebilirsiniz. App Service planları bölgeyi, örnek boyutunu, ölçek sayısını ve SKU'yu (Ücretsiz, Paylaşılan, Temel, Standart veya Premium) tanımlar. Yeni bir App Service planı oluşturmak için Yeni'yi seçin. Ücretsiz ve Temel katmanlar, sitenizin sürekli çalışmasını sağlamak için Always On seçeneğini desteklemez.

    App Service Oluşturma iletişim kutusu

  6. Oluştur'u seçerek Azure'da bu ayarlarla bir Web İşi ve ilgili kaynaklar oluşturun ve proje kodunuzu dağıtın.

  7. Yayımla sayfasına dönmek için Son'useçin.

AlwaysOn’u etkinleştirme

Sürekli bir Web İşi için, Web İşlerinizin doğru şekilde çalışması için sitede Her zaman açık ayarını etkinleştirmeniz gerekir. Always on'u etkinleştirmezseniz çalışma zamanı birkaç dakika etkinlik dışı kaldığında boşta olur.

  1. Yayımla sayfasında Barındırma profili bölüm eylemlerini göstermek için Barındırma'nın üzerindeki üç noktayı seçin ve Azure portalında aç'ı seçin.

  2. Ayarlar'ın altında Yapılandırma>Genel ayarları'nı seçin, Her zaman açık'ıAçık olarak ayarlayın ve ardından kaydet ve devam et'i seçerek siteyi yeniden başlatın.

Projeyi yayımlama

Azure'da oluşturulan web uygulamasıyla Webjobs projesini yayımlamanın zamanı geldi.

  1. Barındırma altındaki Yayımla sayfasında düzenle düğmesini seçin ve Web İşi Türü'nüolarak Continuous değiştirin ve Kaydet'i seçin. Bu, iletiler kuyruğa eklendiğinde Web İşinin çalıştığından emin olur. Tetiklenen Web İşleri genellikle yalnızca el ile web kancaları için kullanılır.

    VS 2022 Yayımla penceresinden Web İşi türünü değiştirin.

  2. Yayımla sayfasının sağ üst köşesindeki Yayımla düğmesini seçin. İşlem tamamlandığında Web İşleriniz Azure'da çalışır.

Depolama bağlantısı uygulaması ayarı oluşturma

Azure'da appsettings.json yapılandırma dosyanızda yerel olarak kullandığınız depolama bağlantı dizesi ayarını oluşturmanız gerekir. Bu, bağlantı dizesi ve

  1. Yayımlama profili sayfanızda Barındırma profili bölümü eylemlerini göstermek için Barındırma'nın üzerindeki üç noktayı seçin ve Azure Uygulaması Hizmet ayarlarını yönet'i seçin.

  2. Uygulama ayarları'nda + Ayar ekle'yi seçin.

  3. Yeni uygulama ayarı adı alanına yazın AzureWebJobsStorage ve Tamam'ı seçin.

  4. Uzak'ta yerel ayarınızdan bağlantı dizesi yapıştırın ve Tamam'ı seçin.

bağlantı dizesi artık Azure'daki uygulamanızda ayarlanmıştır.

Azure'da işlevi tetikleme

  1. Yerel olarak çalışmadığınızdan emin olun. Hala açıksa konsol penceresini kapatın. Aksi takdirde, oluşturduğunuz tüm kuyruk iletilerini ilk işleyen yerel örnek olabilir.

  2. Visual Studio'daki Kuyruk sayfasında kuyruğa daha önce olduğu gibi bir ileti ekleyin.

  3. Kuyruk sayfasını yenilediğinizde yeni ileti, Azure'da çalışan işlev tarafından işlendiğinden kaybolur.

Application Insights günlüğünü etkinleştirme

Web İşi Azure'da çalıştırıldığında, konsol çıkışını görüntüleyerek işlev yürütmeyi izleyemezsiniz. Web İşinizi izleyebilmek için projenizi yayımlarken ilişkili bir Application Insights örneği oluşturmanız gerekir.

Application Insights örneği oluşturma

  1. Yayımlama profili sayfanızda Barındırma profili bölümü eylemlerini göstermek için Barındırma'nın üzerindeki üç noktayı seçin ve Azure Portalda Aç'ı seçin.

  2. web uygulamasında İzleme'nin altında Application Insights'ı ve ardından Application Insights'ı aç'ı seçin.

  3. Örnek ve Konum için oluşturulan Kaynak adını doğrulayın ve Uygula'yı ve ardından Evet'i seçin.

  4. Ayarlar'ın altında Ortam değişkenleri'ni seçin ve yeni bir değişken APPINSIGHTS_INSTRUMENTATIONKEY oluşturulduğunu doğrulayın. Bu anahtar, Web İşi örneğinizi Application Insights'a bağlamak için kullanılır.

Application Insights günlüğünden yararlanmak için günlük kodunuzu da güncelleştirmeniz gerekir.

Application Insights uzantısını yükleme

  1. Microsoft.Azure.WebJobs.Logging.ApplicationInsights NuGet paketinin en son kararlı sürümünü, sürüm 3.x'i edinin.

  2. Aşağıdaki komutta değerini 1. adımda bulduğunuz geçerli sürüm numarasıyla değiştirin <3_X_VERSION> . Her NuGet Paketi türünün benzersiz bir sürüm numarası vardır.

    Install-Package Microsoft.Azure.WebJobs.Logging.ApplicationInsights -Version <3_X_VERSION>
    
  3. Paket Yöneticisi Konsolu'nda komutu giriş noktasında geçerli sürüm numarasıyla yürütürPM>.

Application Insights günlük sağlayıcısını başlatma

Program.cs açın ve çağrısından sonra içinde ConfigureLogging aşağıdaki başlatıcıyı AddConsoleekleyin:

// If the key exists in settings, use it to enable Application Insights.
string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(instrumentationKey))
{
    b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
}

Yöntem Main kodu artık aşağıdaki örnekteki gibi görünmelidir:

static async Task Main()
{
    var builder = new HostBuilder();
    //builder.UseEnvironment(EnvironmentName.Development);
    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddAzureStorageQueues();
    });
    builder.ConfigureLogging((context, b) =>
    {
        b.SetMinimumLevel(LogLevel.Error);
        b.AddFilter("Function", LogLevel.Information);
        b.AddFilter("Host", LogLevel.Debug);
        b.AddConsole();

        // If the key exists in settings, use it to enable Application Insights.
        string? instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
        if (!string.IsNullOrEmpty(instrumentationKey))
        {
            b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
        }
    });
    var host = builder.Build();
    using (host)
    {
        await host.RunAsync();
    }
}

Bu, Application Insights günlük sağlayıcısını varsayılan filtreleme ile başlatır. Yerel olarak çalıştırıldığında, tüm Bilgiler ve üst düzey günlükler hem konsola hem de Application Insights'a yazılır. Yerel olarak çalıştırıldığında, Application Insights günlüğü yalnızca projedeki dosyaya appsetting.json ekledikten APPINSIGHTS_INSTRUMENTATIONKEY sonra desteklenir.

Projeyi yeniden yayımlayın ve işlevi yeniden tetikleyin

  1. Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.

  2. Daha önce olduğu gibi Azure portalını kullanarak daha önce yaptığınız gibi bir kuyruk iletisi oluşturun; ileti metni olarak Hello App Insights! girin.

  3. Yayımlama profili sayfanızda Barındırma profili bölümü eylemlerini göstermek için Barındırma'nın üzerindeki üç noktayı seçin ve Azure Portalda Aç'ı seçin.

  4. Web uygulamasında Ayarlar>İzleyicisi'nin altında Application Insights'ı ve ardından Application Insights verilerini görüntüle'yi seçin.

  5. Ara'yı ve ardından Son 24 saat içindeki tüm verileri gör'e tıklayın.

    Ara'yı seçin

  6. Hello App Insights! iletisini görmüyorsanız Birkaç dakika boyunca düzenli aralıklarla yenile'yi seçin. Application Insights istemcisinin işlediği günlükleri temizlemesi biraz zaman aldığından günlükler hemen görünmez.

    Application Insights günlükleri

Giriş/çıkış bağlamaları ekleme

Bağlamalar, verileri okuyan ve yazan kodu basitleştirir. Giriş bağlamaları, verileri okuyan kodu basitleştirir. Çıkış bağlamaları, veri yazan kodu basitleştirir.

Bağlama ekleme

Giriş bağlamaları, verileri okuyan kodu basitleştirir. Bu örnekte kuyruk iletisi, Azure Depolama'da bir blobu bulmak ve okumak için kullanacağınız blobun adıdır. Ardından, dosyanın bir kopyasını aynı kapsayıcıya yazmak için çıkış bağlamalarını kullanacaksınız.

  1. Functions.cs ekleyinusing:

    using System.IO;
    
  2. ProcessQueueMessage yöntemini aşağıdaki kod ile değiştirin:

    public static void ProcessQueueMessage(
        [QueueTrigger("queue")] string message,
        [Blob("container/{queueTrigger}", FileAccess.Read)] Stream myBlob,
        [Blob("container/copy-{queueTrigger}", FileAccess.Write)] Stream outputBlob,
        ILogger logger)
    {
        logger.LogInformation($"Blob name:{message} \n Size: {myBlob.Length} bytes");
        myBlob.CopyTo(outputBlob);
    }
    

    Bu kodda, queueTrigger bir bağlama ifadesidir ve bu da çalışma zamanında farklı bir değere çözümlendiği anlamına gelir. Çalışma zamanında, kuyruk iletisinin içeriğine sahiptir.

    Bu kod, kuyruk iletisi tarafından tanımlanan dosyanın bir kopyasını oluşturmak için çıkış bağlamalarını kullanır. Dosya kopyasına copy- ön eki eklenir.

  3. Program.cs uzantısı yöntemindeConfigureWebJobs, Depolama uzantısını AddAzureStorageBlobs başlatmak için örnekteki (komutundan Build önce) yöntemini HostBuilder ekleyin. Bu noktada ConfigureWebJobs yöntemi şöyle görünür:

    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddAzureStorageQueues();
        b.AddAzureStorageBlobs();
    });
    
  4. Depolama hesabınızda bir blob kapsayıcısı oluşturun.

    a. Azure portalında Veri depolama alanının altındaki Kapsayıcılar sekmesine gidin ve + Kapsayıcı'yı seçin

    b. Yeni kapsayıcı iletişim kutusunda kapsayıcı adı olarak kapsayıcı yazın ve Oluştur'u seçin.

  5. Program.cs dosyasını blob kapsayıcısına yükleyin. (Bu dosya burada örnek olarak kullanılır; herhangi bir metin dosyasını karşıya yükleyebilir ve dosyanın adını içeren bir kuyruk iletisi oluşturabilirsiniz.)

    a. Oluşturduğunuz yeni kapsayıcıyı seçin

    b. Karşıya Yükle düğmesini seçin.

    Blob karşıya yükleme düğmesi

    c. Program.cs bulup seçin ve ardından Tamam'ı seçin.

Projeyi yeniden yayımlama

  1. Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.

  2. Yayımla iletişim kutusunda geçerli profilin seçili olduğundan emin olun ve yayımla'yı seçin. Yayımlamanın sonuçları Çıkış penceresinde ayrıntılı olarak gösterilir.

  3. Daha önce oluşturduğunuz kuyrukta, iletinin metni olarak Program.cs bir kuyruk iletisi oluşturun.

    Kuyruk iletisi Program.cs

  4. Blob kapsayıcısında dosyanın copy-Program.cs bir kopyası görüntülenir.

Sonraki adımlar

Bu öğreticide Web İşleri SDK 3.x projesi oluşturma, çalıştırma ve dağıtma işlemleri gösterilir.