ASP.NET Core uygulamalarını Azure App Service’e dağıtma

Azure App Service, ASP.NET Core dahil olmak üzere web uygulamalarını barındırmaya yönelik bir Microsoft bulut bilişim platformu hizmetidir.

Güvenilir web uygulaması desenleri

İster sıfırdan ister mevcut bir uygulamayı yeniden düzenleme olsun, modern, güvenilir, performanslı, test edilebilir, uygun maliyetli ve ölçeklenebilir bir ASP.NET Core uygulaması oluşturma yönergeleri için YouTube videolarınıve makalesini for.NET Güvenilir Web Uygulaması Düzeni'nebakın.

Yararlı kaynaklar

App Service Belgeleri, Azure Apps belgelerinin, öğreticilerinin, örneklerinin, nasıl yapılır kılavuzlarının ve diğer kaynakların ana sayfasıdır. ASP.NET Core uygulamalarını barındırmayla ilgili iki önemli öğretici şunlardır:

Azure'da ASP.NET Core web uygulaması oluşturma
ASP.NET Core web uygulaması oluşturmak ve Windows üzer,nde Azure App Service’e dağıtmak için Visual Studio'yu kullanın.

Linux üzerinde App Service'da ASP.NET Core uygulaması oluşturma
ASP.NET Core web uygulaması oluşturmak ve Linux üzerinde App Service Azure App Service’e dağıtmak için Visual komut satırı kullanın.

Azure Uygulaması hizmetinde kullanılabilen ASP.NET Core sürümü için, bkz. App Service Panosunda ASP.NET Core.

App Service Duyuruları deposuna abone olun ve sorunları izleyin. App Service ekibi düzenli olarak App Service’te gelen duyurular ve senaryolar yayınlar.

Aşağıdaki makaleler, ASP.NET Core belgelerinde bulunabilir:

Visual Studio ile Azure’a ASP.NET Core uygulaması yayımlama
Visual Studio kullanarak bir ASP.NET Core uygulamasını Azure App Service'te yayımlamayı öğrenin.

İlk işlem hattınızı oluşturma
Bir ASP.NET Core uygulaması için bir CI derlemesi ayarlayın, ardından Azure App Service için sürekli bir dağıtım sürümü oluşturun.

Azure Web App korumalı alanı
Azure Apps platformu tarafından zorunlu kılınan Azure App Service çalışma zamanı yürütme sınırlamalarını keşfedin.

ASP.NET Core projelerinde sorun giderme ve hata ayıklama
ASP.NET Core projeleriyle ilgili uyarıları ve hataları anlayın ve giderin.

Uygulama yapılandırması

Platform

Bir App Services uygulamasının platform mimarisi (x86/x64), A serisi işlem (Temel) veya daha yüksek barındırma katmanında barındırılan uygulamalar için Azure Portal'daki uygulama ayarlarında ayarlanır. Uygulamanın yayımlama ayarlarının (örneğin, Visual Studio yayımlama profilinde (.pubxml)) Azure Portal'daki uygulama hizmet yapılandırmasındaki ayarla eşleştiğini onaylayın.

64 bit (x64) ve 32 bit (x86) uygulamalar için çalışma zamanları Azure App Service üzerinde bulunur. App Service üzerinde kullanılabilen .NET Core SDK'sı 32 bittir, ancak Kudu konsolunu veya Visual Studio'daki yayımlama işlemini kullanarak, yerel olarak derlenmiş 64 bit uygulamaları dağıtabilirsiniz. Daha fazla bilgi için Uygulamayı yayımlama ve dağıtma bölümüne bakın.

Yerel bağımlılıkları olan uygulamalara yönelik 32 bit (x86) uygulamalar için çalışma zamanları, Azure App Service üzerinde bulunur. App Service üzerinde kullanılabilen .NET Core SDK'sı 32 bittir.

.NET Core çalışma zamanı ve .NET Core SDK'sı hakkında bilgiler gibi .NET Core çerçeve bileşenleri ve dağıtım yöntemleri hakkında daha fazla bilgi için, bkz. .NET Core Hakkında: Oluşturma.

Paketler

Azure App Service dağıtılan uygulamalar için otomatik günlüğe kaydetme özellikleri sağlamak üzere aşağıdaki NuGet paketlerini ekleyin:

Uygulamanın proje dosyasında yukarıdaki paketlere açıkça başvurulmalıdır.

Azure Portal'ı kullanarak uygulama yapılandırmasını geçersiz kılma

Azure Portal'daki uygulama ayarları, uygulama için ortam değişkenlerini ayarlamanıza izin verir. Ortam değişkenleri, Ortam Değişkenleri Yapılandırma Sağlayıcısı tarafından tüketilebilir.

Azure Portal'da bir uygulama ayarı oluşturulduğunda veya değiştirildiğinde ve Kaydet düğmesi seçildiğinde, Azure Uygulaması yeniden başlatılır. Ortam değişkeni, hizmet yeniden başlatıldıktan sonra uygulama tarafından kullanılabilir.

Bir uygulama Genel Ana Bilgisayarı kullandığında, ana bilgisayarı derlemek için CreateDefaultBuilder çağrıldığında ortam değişkenleri uygulamanın yapılandırmasına yüklenir. Daha fazla bilgi için, bkz. ASP.NET Core'da .NET Genel Ana Bilgisayarı ve Ortam Değişkenleri Yapılandırma Sağlayıcısı.

Azure Portal'daki uygulama ayarları, uygulama için ortam değişkenlerini ayarlamanıza izin verir. Ortam değişkenleri, Ortam Değişkenleri Yapılandırma Sağlayıcısı tarafından tüketilebilir.

Azure Portal'da bir uygulama ayarı oluşturulduğunda veya değiştirildiğinde ve Kaydet düğmesi seçildiğinde, Azure Uygulaması yeniden başlatılır. Ortam değişkeni, hizmet yeniden başlatıldıktan sonra uygulama tarafından kullanılabilir.

Bir uygulama Web Ana Bilgisayarı kullandığında, ana bilgisayarı derlemek için CreateDefaultBuilder çağrıldığında ortam değişkenleri uygulamanın yapılandırmasına yüklenir. Daha fazla bilgi için, bkz. ASP.NET Core Web Ana Bilgisayarı ve Ortam Değişkenleri Yapılandırma Sağlayıcısı.

Ara sunucu ve yük dengeleyici senaryoları

İşlem dışı barındırma sırasında İletilen Üst Bilgiler Ara Yazılımı'nı yapılandıran IIS Tümleştirme Ara Yazılımı ve ASP.NET Core Modülü şemayı (HTTP/HTTPS) ve isteğin kaynaklandığı uzak IP adresini iletecek şekilde yapılandırılır. Ek ara sunucuların ve yük dengeleyicilerin arkasında barındırılan uygulamalar için ek yapılandırma gerekebilir. Daha fazla bilgi için bkz. ASP.NET Core'u ara sunucular ve yük dengeleyicilerle çalışacak şekilde yapılandırma.

İzleme ve Günlüğe Kaydetme

App Service dağıtılan ASP.NET Core uygulamaları otomatik olarak bir ASP.NET Core Günlük Tümleştirmesi, App Service uzantısı alır. Uzantı, Azure App Service'da ASP.NET Core uygulamaları için günlüğe kaydetme tümleştirmesini etkinleştirir.

App Service dağıtılan ASP.NET Core uygulamaları otomatik olarak bir ASP.NET Core Günlük Uzantıları, App Service uzantısı alır. Uzantı, Azure App Service'da ASP.NET Core uygulamaları için günlüğe kaydetme tümleştirmesini etkinleştirir.

İzleme, günlüğe kaydetme ve sorun giderme bilgileri için aşağıdaki makalelere bakın:

Azure App Service’te uygulamaları izleme
Uygulamalar ve App Service planları için kotaları ve ölçümleri gözden geçirmeyi öğrenin.

Azure App Service’te uygulamalar için tanılama günlüğünü etkinleştirme
HTTP durum kodları, başarısız istekler ve web sunucusu etkinliği için tanılama günlüğünü etkinleştirmeyi ve günlüğe erişmeyi öğrenin.

ASP.NET Core hatalarını işleme
ASP.NET Core uygulamalarındaki hataları işlemeye yönelik yaygın yaklaşımları anlayın.

Azure App Service ve IIS'de ASP.NET Core sorunlarını giderme
ASP.NET Core uygulamalarıyla Azure App Service dağıtımlarıyla ilgili sorunları tanılamayı öğrenin.

ASP.NET Core ile Azure App Service ve IIS için yaygın hataları giderme
Sorun giderme önerileriyle Azure App Service/IIS tarafından barındırılan uygulamalar için yaygın dağıtım yapılandırma hatalarını inceleyin.

Veri Koruma anahtar halkası ve dağıtım yuvaları

Veri Koruma anahtarları, %HOME%\ASP.NET\DataProtection-Keys klasöründe kalıcıdır. Bu klasör, ağ depolaması tarafından desteklenir ve uygulamayı barındıran tüm makineler arasında eşitlenir. Anahtarlar, bekleyenler için korunmaz. Bu klasör, anahtar halkayı tek bir dağıtım yuvasındaki bir uygulamanın tüm örneklerine sağlar. Hazırlama ve Üretim gibi ayrı dağıtım yuvaları, bir anahtar kademeyi paylaşmaz.

Dağıtım yuvaları arasında geçiş yaparken, veri koruma kullanan herhangi bir sistem önceki yuva içindeki anahtar halkasını kullanarak depolanan verilerin şifresini çözemez. Cookie ASP.NET Ara Yazılımı, cookie verilerini korumak için veri korumasını kullanır. Bu, kullanıcıların standart ASP.NET Cookie Ara Yazılımı kullanan bir uygulamada oturumlarının kapatılmasını doğurur. Yuvadan bağımsız anahtar halkası çözümü için aşağıdakiler gibi bir dış anahtar halkası sağlayıcısı kullanın:

  • Azure Blob Storage
  • Azure Key Vault
  • SQL deposu
  • Redis Cache

Daha fazla bilgi için, bkz. ASP.NET Core'da anahtar depolama sağlayıcıları.

.NET Core önizlemesi kullanan bir ASP.NET Core uygulaması dağıtma

.NET Core'un önizleme sürümünü kullanan bir uygulamayı dağıtmak için aşağıdaki kaynaklara bakın. Çalışma zamanı kullanılabilir olduğunda ancak SDK Azure App Service yüklenmediğinde de bu yaklaşımlar kullanılır.

Azure Uygulaması hizmetinde kullanılabilen ASP.NET Core sürümü için, bkz. App Service Panosunda ASP.NET Core.

Bağımsız dağıtımlar için .NET SDK'sının sürümünü seçme hakkında bilgi için, bkz. Kullanılacak .NET Core sürümünü seçme.

Azure Pipelines kullanarak .NET Core SDK Sürümünü belirtme

Azure DevOps ile sürekli tümleştirme derlemesi ayarlamak için Azure App Service CI/CD senaryolarını kullanın. Azure DevOps derlemesi oluşturulduktan sonra isteğe bağlı olarak, derlemeyi belirli bir SDK sürümünü kullanacak şekilde yapılandırın.

.NET Core SDK sürümünü belirtme

Azure DevOps derlemesi oluşturmak için App Service dağıtım merkezini kullanırken, varsayılan derleme işlem hattı Restore, Build, Test ve Publish için adımları içerir. SDK sürümünü belirtmek için Aracı işi listesinde Ekle (+) düğmesini seçerek yeni bir adım ekleyin. Arama çubuğunda .NET Core SDK'sını arayın.

Add the .NET Core SDK step

Adımı, derlemenin ilk konumuna taşıyın, böylece bunu izleyen adımlar belirtilen .NET Core SDK sürümünü kullanır. .NET Core SDK sürümünü belirtin. Bu örnekte SDK 3.0.100 olarak ayarlanmıştır.

Completed SDK step

Kendi içinde dağıtım (SCD) yayımlamak için, Publish adımında SCD'yi yapılandırın ve Çalışma Zamanı Tanımlayıcısı'nı (RID) sağlayın.

Self-contained publish

Bağımsız önizleme uygulaması dağıtma

Önizleme çalışma zamanını hedefleyen kendi içinde dağıtım (SCD), dağıtımda önizleme çalışma zamanını taşır.

Bağımsız bir uygulama dağıtırken:

Uygulamayı kendi içinde dağıtma bölümündeki yönergeleri izleyin.

Kapsayıcılar için Web Apps ile Docker kullanma

konumundaki https://hub.docker.com/_/microsoft-dotnet Docker Hub, en son önizleme Docker görüntülerini içerir. Görüntüler, temel görüntü olarak kullanılabilir. Görüntüyü kullanın ve Kapsayıcılar için Web Apps’i normal şekilde dağıtın.

Önizleme sitesi uzantısını yükleme

Önizleme sitesi uzantısı kullanırken bir sorun oluşursa bir dotnet/AspNetCore sorunu açın.

  1. Azure Portal’dan App Service’e gidin.
  2. Web uygulamasını arayın.
  3. "Uzantılar" için filtreleme yapmak üzere arama kutusuna "ex" yazın veya yönetim araçları listesini aşağı kaydırın.
  4. Uzantılar'ı seçin.
  5. Ekle'yi seçin.
  6. Listeden ASP.NET Core {X.Y} ({x64|x86}) Çalışma Zamanı uzantısını seçin; burada {X.Y} ASP.NET Core önizleme sürümüdür ve {x64|x86} platformu belirtir.
  7. Yasal koşulları kabul etmek için Tamam’ı seçin.
  8. Uzantıyı yüklemek için Tamam’ı seçin.

İşlem tamamlandığında, en son .NET Core önizlemesi yüklenir. Yüklemeyi doğrulama:

  1. Gelişmiş Araçlar’ı seçin.

  2. Gelişmiş Araçlar’da Git’i seçin.

  3. Hata ayıklama konsolu>PowerShell menü öğesini seçin.

  4. PowerShell isteminde aşağıdaki komutu yürütün. Komutta {X.Y} için ASP.NET Core çalışma zamanı sürümünü ve {PLATFORM} için platformu değiştirin:

    Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.{PLATFORM}\
    

    x64 önizleme çalışma zamanı yüklendiğinde komut True döndürür.

Dekont

Bir App Services uygulamasının platform mimarisi (x86/x64), A serisi işlem (Temel) veya daha yüksek barındırma katmanında barındırılan uygulamalar için Azure Portal'daki uygulama ayarlarında ayarlanır. Uygulamanın yayımlama ayarlarının (örneğin, Visual Studio yayımlama profilinde (.pubxml)) Azure portaldaki uygulama hizmet yapılandırmasındaki ayarla eşleştiğini onaylayın.

Uygulama, işlem modunda çalıştırılırsa ve platform mimarisi 64 bit (x64) için yapılandırılmışsa ASP.NET Core Modülü, varsa 64 bit önizleme çalışma zamanını kullanır. Azure Portal'ı kullanarak ASP.NET Core {X.Y} (x64) Çalışma Zamanı uzantısını yükleyin.

x64 önizleme çalışma zamanını yükledikten sonra, yüklemeyi doğrulamak için Azure Kudu PowerShell komut penceresinde aşağıdaki komutu çalıştırın. Aşağıdaki komutta {X.Y} yerine ASP.NET Core çalışma zamanı sürümünü yazın:

Test-Path D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64\

x64 önizleme çalışma zamanı yüklendiğinde komut True döndürür.

Dekont

ASP.NET Core Uzantıları, Azure App Services’de ASP.NET Core için Azure günlüğünü etkinleştirme gibi ek işlevler sağlar. Uzantı, Visual Studio'dan dağıtılırken otomatik olarak yüklenir. Uzantı yüklü değilse, uygulama için yükleyin.

ARM şablonuyla önizleme sitesi uzantısını kullanma

Uygulama oluşturmak ve dağıtmak için ARM şablonu kullanılıyorsa, Microsoft.Web/sites/siteextensions kaynak türü, site uzantısını bir web uygulamasına eklemek için kullanılabilir. Aşağıdaki örnekte uygulamaya ASP.NET Core 5.0 (x64) Çalışma Zamanı site uzantısı (AspNetCoreRuntime.5.0.x64) eklenmiştir:

{
    ...
    "parameters": {
        "site_name": {
            "defaultValue": "{SITE NAME}",
            "type": "String"
        },
        ...
    },       
    ...
    "resources": [
        ...
        {
            "type": "Microsoft.Web/sites/siteextensions",
            "apiVersion": "2018-11-01",
            "name": "[concat(parameters('site_name'), '/AspNetCoreRuntime.5.0.x64')]",
            "location": "[resourceGroup().location]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('site_name'))]"
            ]
        }
    ]
}
    

{SITE NAME} yer tutucusu için Azure App Service'de uygulamanın adını kullanın (örneğin, contoso).

Uygulamayı oluşturun ve dağıtın

64 bit dağıtım için:

  • 64 bit bir uygulama oluşturmak için 64 bit .NET Core SDK'sını kullanın.
  • App Service Yapılandırma ve Genel ayarlarındaPlatformu64 Bit olarak ayarlayın. Uygulama, platform bitliği seçimini etkinleştirmek için Temel veya daha yüksek bir hizmet planı kullanmalıdır.

Uygulama çerçevesine bağımlı uygulamayı dağıtma

  1. Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla öğesini seçin. Alternatif olarak Visual Studio araç çubuğundan Derleme ve Yayımlama {Uygulama Adı} öğesini seçin.
  2. Yayımla iletişim kutusunda Azure ve İleri'yi seçin.
  3. Azure hizmetini seçin.
  4. Gelişmiş'i seçin. Yayımla iletişim kutusu açılır.
  5. Bir Kaynak grubu ve Barındırma planı seçin veya yenilerini oluşturun.
  6. Bitir'i seçin.
  7. Yayımla sayfasında:
    • Yapılandırma için Kalem simgesini Yapılandırmayı Düzenle'yi seçin:
      • Sürüm yapılandırmasının seçili olduğunu onaylayın.
      • Dağıtım Modu açılan listesinde Çerçeveye Bağımlı öğesini seçin.
      • Hedef Çalışma Zamanı açılan listesinde istediğiniz çalışma zamanını seçin. Varsayılan değer: win-x86.
    • Dağıtım sırasında ek dosyaları kaldırmak için Dosya Yayımlama Seçenekleri’ni açın ve hedefte ek dosyaları kaldırmak için onay kutusunu seçin.
    • Kaydet'i seçin.
    • Yayımla öğesini seçin.

Uygulamayı kendi içinde dağıtma

Bağımsız dağıtım (SCD) için Visual Studio veya .NET Core CLI kullanın.

  1. Çözüm Gezgini'nde projeye sağ tıklayın ve Yayımla öğesini seçin. Alternatif olarak Visual Studio araç çubuğundan Derleme ve Yayımlama {Uygulama Adı} öğesini seçin.
  2. Yayımla iletişim kutusunda Azure ve İleri'yi seçin.
  3. Azure hizmetini seçin.
  4. Gelişmiş'i seçin. Yayımla iletişim kutusu açılır.
  5. Bir Kaynak grubu ve Barındırma planı seçin veya yenilerini oluşturun.
  6. Bitir'i seçin.
  7. Yayımla sayfasında:
    • Yapılandırma için Kalem simgesini Yapılandırmayı Düzenle'yi seçin:
      • Sürüm yapılandırmasının seçili olduğunu onaylayın.
      • Dağıtım Modu açılan listesinde Kendi İçinde öğesini seçin.
      • Hedef Çalışma Zamanı açılan listesinde istediğiniz çalışma zamanını seçin. Varsayılan değer: win-x86.
    • Dağıtım sırasında ek dosyaları kaldırmak için Dosya Yayımlama Seçenekleri’ni açın ve hedefte ek dosyaları kaldırmak için onay kutusunu seçin.
    • Kaydet'i seçin.
    • Yayımla öğesini seçin.

Protokol ayarları (HTTPS)

Güvenli protokol bağlamaları, HTTPS üzerinden isteklere yanıt verirken kullanılacak bir sertifikanın belirtilmesine olanak sağlar. Bağlama, belirli bir ana bilgisayar adı için geçerli bir özel sertifika (.pfx) verilmesini gerektirir. Daha fazla bilgi için, bkz. Öğretici: Mevcut bir özel SSL sertifikasını Azure App Service’e bağlama.

Web.config’i dönüştürme

Yayımlama sırasında web.config dosyasını dönüştürmeniz gerekirse (örneğin yapılandırmaya, profile veya ortama bağlı olarak ortam değişkenlerini ayarlama) bkz. Web.config'i dönüştürme.

Ek kaynaklar

Windows Server üzerinde Azure App Service Internet Information Services (IIS) kullanır. Kestrel ve ön uçta YARP yük dengeleyiciyi sağlar. Aşağıdaki konular, temel alınan IIS teknolojisiyle ilgilidir: