Öğ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
Azure geliştirme iş yüküyle Visual Studio 2022. Visual Studio 2022'yi yükleyin.
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
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
Visual Studio'da Dosya>Yeni Proje'yi> seçin.
Yeni proje oluştur'un altında Konsol Uygulaması (C#) öğesini ve ardından İleri'yi seçin.
Yeni projenizi yapılandırın altında projeyi WebjobsSDKSample olarak adlandırın ve İleri'yi seçin.
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.
Microsoft.Azure.WebJobs.Extensions NuGet paketinin en son kararlı 4.x sürümünü edinin.
Visual Studio'da Araçlar>NuGet Paket Yöneticisi gidin.
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.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.
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 IHost
bir konak oluşturur.
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;
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.
NuGet paketinin
Microsoft.Extensions.Logging.Console
içerenMicrosoft.Extensions.Logging
en son kararlı sürümünü alın.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>
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.
sekme Program.cs altına şu
using
deyimi ekleyin:using Microsoft.Extensions.Logging;
Program.cs altında devam ederek komutunun
ConfigureLogging
önüneBuild
yönteminiHostBuilder
ekleyin. yöntemi yapılandırmayaAddConsole
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
veerror
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:
- 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 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.
Microsoft.Azure.WebJobs.Extensions.Storage NuGet paketinin en son kararlı sürümünü, sürüm 5.x'i edinin.
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>
Paket Yöneticisi Konsolu'nda komutu giriş noktasında geçerli sürüm numarasıyla yürütür
PM>
.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
Program.cs devam ederek uzantı yönteminde
ConfigureWebJobs
, Depolama uzantısınıAddAzureStorageQueues
başlatmak için örnekteki (komut öncesindeBuild
) yönteminiHostBuilder
ekleyin. Bu noktadaConfigureWebJobs
yöntemi şöyle görünür:builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); b.AddAzureStorageQueues(); });
örneği eklendikten sonra yöntemine
builder
aşağıdaki koduMain
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ı queue
bir 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.
Çözüm Gezgini projeye sağ tıklayın, Yeni Öğe Ekle'yi>ve ardından Sınıf'ı seçin.
Yeni C# sınıf dosyasını Functions.cs adlandırın ve Ekle'yi seçin.
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ıqueue
kuyruğa bir ileti eklendiğinde işlev yürütülür vemessage
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.
Azure portalında depolama hesabınıza gidin ve Ayarlar'ı seçin.
Ayarlar'da Erişim anahtarları'nı seçin.
anahtar1 altındaki Bağlantı dizesi için Panoya kopyala simgesini seçin.
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.
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.
Yeni dosyaya, aşağıdaki örnekte olduğu gibi bir
AzureWebJobsStorage
alan ekleyin:{ "AzureWebJobsStorage": "{storage connection string}" }
{storage bağlantı dizesi} öğesini daha önce kopyaladığınız bağlantı dizesi değiştirin.
Çö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.
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.
Yeni kuyruğa tıklayın ve İleti ekle'yi seçin.
İleti Ekle iletişim kutusunda İleti metni olarak Merhaba Dünya! yazın ve Tamam'ı seçin. Artık kuyrukta bir ileti var.
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ızdanProcessQueueMessage
, Webjobs çalışma zamanı adlıqueue
kuyruktaki iletileri dinler. Bu kuyrukta yeni bir ileti bulduğunda çalışma zamanı, ileti dizesi değerini geçirerek işlevini çağırır.Kuyruk penceresine geri dönün ve yenileyin. İleti, yerel olarak çalıştırılan işleviniz tarafından işlendiğinden kayboldu.
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
Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.
Yayımla iletişim kutusunda Hedef için Azure'ıve ardından İleri'yi seçin.
Belirli bir hedef için Azure Web İşleri'ne ve ardından İleri'ye tıklayın.
App Service örneklerinin üstündeki artı (+) düğmesini seçerek Yeni Bir Azure Web İşi oluşturun.
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. Oluştur'u seçerek Azure'da bu ayarlarla bir Web İşi ve ilgili kaynaklar oluşturun ve proje kodunuzu dağıtın.
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.
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.
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.
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.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
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.
Uygulama ayarları'nda + Ayar ekle'yi seçin.
Yeni uygulama ayarı adı alanına yazın
AzureWebJobsStorage
ve Tamam'ı seçin.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
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.
Visual Studio'daki Kuyruk sayfasında kuyruğa daha önce olduğu gibi bir ileti ekleyin.
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
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.
web uygulamasında İzleme'nin altında Application Insights'ı ve ardından Application Insights'ı aç'ı seçin.
Örnek ve Konum için oluşturulan Kaynak adını doğrulayın ve Uygula'yı ve ardından Evet'i seçin.
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
Microsoft.Azure.WebJobs.Logging.ApplicationInsights NuGet paketinin en son kararlı sürümünü, sürüm 3.x'i edinin.
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>
Paket Yöneticisi Konsolu'nda komutu giriş noktasında geçerli sürüm numarasıyla yürütür
PM>
.
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ı AddConsole
ekleyin:
// 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
Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.
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.
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.
Web uygulamasında Ayarlar>İzleyicisi'nin altında Application Insights'ı ve ardından Application Insights verilerini görüntüle'yi seçin.
Ara'yı ve ardından Son 24 saat içindeki tüm verileri gör'e tıklayın.
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.
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.
Functions.cs ekleyin
using
:using System.IO;
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.
Program.cs uzantısı yönteminde
ConfigureWebJobs
, Depolama uzantısınıAddAzureStorageBlobs
başlatmak için örnekteki (komutundanBuild
önce) yönteminiHostBuilder
ekleyin. Bu noktadaConfigureWebJobs
yöntemi şöyle görünür:builder.ConfigureWebJobs(b => { b.AddAzureStorageCoreServices(); b.AddAzureStorageQueues(); b.AddAzureStorageBlobs(); });
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.
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.
c. Program.cs bulup seçin ve ardından Tamam'ı seçin.
Projeyi yeniden yayımlama
Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla'yı seçin.
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.
Daha önce oluşturduğunuz kuyrukta, iletinin metni olarak Program.cs bir kuyruk iletisi oluşturun.
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.