Aracılığıyla paylaş


Öğretici: Olay odaklı arka plan işleme için Azure Web İşleri 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 App Service için Azure Web İşleri SDK'sını kullanmaya başlayın.

Visual Studio 2022'yi kullanarak Azure Depolama Kuyruğu iletilerine yanıt vermek için Web İşleri SDK'sını kullanan bir .NET Core konsol uygulaması oluşturun, projeyi yerel olarak çalıştırın ve son olarak Azure'a dağıtı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 6.0 üzerinde çalışan bir .NET Core konsol uygulaması oluşturmak için doğrulanmıştır.

Proje oluşturma

  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 Web İşleri NuGet paketini yükleyin. Bu paket, işlev kodunuzu Azure App Service'de Webjobs'ta yayımlamanıza olanak tanıyan Microsoft.Azure.WebJobs'ı (Web İşleri SDK' sı) 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'ne gidin.

  3. Paket Yöneticisi Konsolu'nu seçin. NuGet cmdlet'lerinin listesini, belgelerin bağlantısını ve giriş PM> 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>
    
  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şlevler için çalışma zamanı kapsayıcısıdır. Aşağıdaki adımlar, ASP.NET Core'de 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'nin 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 çağrılarak HostBuilder ayarlanır. Daha fazla bilgi için bkz. .NET Genel Ana Bilgisayarı. ConfigureWebJobs Uzantı yöntemi Web İşleri 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. Microsoft.Extensions.Logging adlı bu çerçeve, çeşitli yerleşik ve üçüncü taraf günlük sağlayıcılarıyla çalışan bir API içerir.

  1. NuGet paketininMicrosoft.Extensions.Logging.ConsoleMicrosoft.Extensions.Logging içeren en 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 <6_X_VERSION> . Her NuGet Paketi türünün benzersiz bir sürüm numarası vardır.

    Install-Package Microsoft.Extensions.Logging.Console -version <6_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. Program.cs sekmesinin 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.AddConsole();
    });
    

    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.AddConsole();
                });
        var host = builder.Build();
        using (host)
        {
            await host.RunAsync();
        }
    }
    

    Bu ekleme şu değişiklikleri yapar:

    • Pano günlüğünü devre dışı bırakır. Pano eski bir izleme aracıdır ve yüksek aktarım hızına sahip üretim senaryoları için pano günlüğü önerilmez.
    • Varsayılan filtreleme ile konsol sağlayıcısını ekler.

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 başlayarak, Microsoft.Azure.WebJobs.Extensions.Storage depolama hizmetine göre bölünmüştür ve uzantı yöntemini hizmet türüne AddAzureStorage() göre geçirmiştir.

  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, giriş noktasında geçerli sürüm numarasıyla komutunu yürütürPM>.

  4. Program.cs dosyasında devam ederek, uzantı yöntemindeConfigureWebJobs, Depolama uzantısını AddAzureStorageQueues başlatmak için örneğine HostBuilder (komutundan Build önce) yöntemini ekleyin. Bu noktada ConfigureWebJobs yöntemi şu şekilde görünür:

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

    builder.UseEnvironment(EnvironmentName.Development);
    

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

    Yöntemi Main şimdi aşağıdaki örnekteki gibi görünmelidir:

    static async Task Main()
    {
        var builder = new HostBuilder();
        builder.UseEnvironment(EnvironmentName.Development);
        builder.ConfigureLogging((context, b) =>
        {
            b.AddConsole();
        });
        builder.ConfigureWebJobs(b =>
        {
            b.AddAzureStorageCoreServices();
            b.AddAzureStorageQueues();
        });
        var host = builder.Build();
        using (host)
        {
            await host.RunAsync();
        }
    }
    

Kuyruk ile 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'da projeye sağ tıklayın,Yeni ÖğeEkle'yi> ve ardından Sınıf'ı seçin.

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

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

    using Microsoft.Azure.WebJobs;
    using Microsoft.Extensions.Logging;
    
    namespace WebJobsSDKSample
    {
        public 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ı kuyruğa queuebir 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ı dizenizi bulma ve kopyalama

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

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

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

  3. key1 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ı dizesini 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 ÖğeEkle'yi> seçin, JavaScript JSON yapılandırma dosyası'nı seçin, yeni dosyaya appsettings.json dosyasını adlandırın ve Ekle'yi seçin.

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

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

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

Bu dosya bir bağlantı dizesi gizli dizisi içerdiğinden, dosyayı uzak kod deposunda depolamamalısınız. Projenizi Azure'da yayımladıktan sonra, Azure App Service'de 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 depolama hesabınıza gidin ve Kuyruklar sekmesini (1) seçin. + Kuyruk (2) öğesini seçin ve Kuyruk adı (3) olarak kuyruk 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ıp 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 ProcessQueueMessage özniteliğini QueueTrigger kullandığınızdan, Web İşleri ç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 ve yenileyin. yerel olarak çalıştırılan işleviniz tarafından işlendiğinden ileti kayboldu.

  6. Konsol penceresini kapatın.

Şimdi 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. Azure'da App Service için bir .NET konsol uygulaması 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 örneklerin üst kısmında Yeni Azure Web İşi oluştur seçeneğinin yanındaki artı (+) düğmesini seçin.

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

    Ayar Önerilen değer Açıklama
    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ştur iletişim kutusu

  6. Bu ayarlarla Azure'da bir Web İşi ve ilgili kaynaklar oluşturmak ve proje kodunuzu dağıtmak için Oluştur'u seçin.

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

AlwaysOn’u etkinleştirme

Sürekli bir Web İşi için, Web İşlerinizin düzgün ç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ıktan sonra 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 üstündeki üç noktayı seçin ve Azure portal'de 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 Web İşleri projesini yayımlamanın zamanı geldi.

  1. Barındırma altındaki Yayımla sayfasında düzenle düğmesini seçin, Web İşi Türü'nüContinuous olarak 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 yapılan 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ı dizesini daha güvenli bir şekilde depolamanıza ve

  1. Profili yayımla sayfanızda Barındırma profili bölüm eylemlerini göstermek için Barındırma'nın üstündeki üç noktayı seçin ve Azure App Service 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ı dizesini yapıştırın ve Tamam'ı seçin.

Bağlantı dizesi artık Azure'daki uygulamanızda ayarlanı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 üstündeki üç noktayı seçin ve Azure Portalda Aç'ı seçin.

  2. Web uygulamasında Ayarlar'ın 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ı seçin.

  4. Ayarlar'ın altında Yapılandırma'yı seçin ve yeni bir oluşturulduğunu APPINSIGHTS_INSTRUMENTATIONKEY 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 3.x sürümünün en son kararlı sürümünü 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, giriş noktasında geçerli sürüm numarasıyla komutunu yürütürPM>.

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

Program.cs dosyasını açın ve çağrısından sonra öğesine 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 şimdi 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.AddAzureStorage();
            });
    builder.ConfigureLogging((context, b) =>
            {
                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ışırken, tüm Bilgiler ve üst düzey günlükler hem konsola hem de Application Insights'a yazılır.

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 kullanarak daha önce yaptığınız gibi bir kuyruk iletisi oluşturun; ileti metni olarak Hello App Insights! ifadesini girin.

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

  4. Web uygulamasında Ayarlar'ın 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'taki günlükler

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 dosyasına bir usingekleyin:

    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 bir queueTriggerbağ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 dosyasındaki uzantı 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 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ıyla 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 dosyasını 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 Program.cs olacak şekilde bir kuyruk iletisi oluşturun.

    Kuyruk iletisi Program.cs

  4. Blob kapsayıcısında copy-Program.cs dosyasının 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.