Azure App Service ve IIS'de ASP.NET Core sorunlarını giderme

Tarafından Justin Kotalik

Bu makalede, yaygın uygulama başlatma hataları hakkında bilgi ve bir uygulama Azure Uygulaması Hizmetine veya IIS'ye dağıtıldığında hataları tanılama yönergeleri sağlanır:

Uygulama başlatma hataları
Yaygın başlangıç HTTP durum kodu senaryolarını açıklar.

Azure Uygulaması Hizmetinde sorun giderme
Azure Uygulaması Hizmetine dağıtılan uygulamalar için sorun giderme önerileri sağlar.

IIS üzerinde sorun giderme
IIS'ye dağıtılan veya IIS Express'te yerel olarak çalıştırılan uygulamalar için sorun giderme önerileri sağlar. Bu kılavuz hem Windows Server hem de Windows masaüstü dağıtımları için geçerlidir.

Paket önbelleklerini temizleme
Tutarsız paketler büyük yükseltmeler gerçekleştirirken veya paket sürümlerini değiştirirken bir uygulamayı bozduğunda ne yapacağını açıklar.

Ek Kaynaklar
Ek sorun giderme konularını listeler.

Uygulama başlatma hataları

Visual Studio'da ASP.NET Core projesi varsayılan sunucusudur Kestrel. Visual Studio, IIS Express kullanacak şekilde yapılandırılabilir. A 502.5 - İşlem Hatası veya 500.30 - IIS Express ile yerel olarak hata ayıklarken oluşan Başlatma Hatası , bu konudaki öneriler kullanılarak tanılanabilir.

403.14 Yasak

Uygulama başlatılamıyor. Aşağıdaki hata günlüğe kaydedilir:

The Web server is configured to not list the contents of this directory.

Hataya genellikle aşağıdaki senaryolardan herhangi birini içeren barındırma sistemindeki bozuk bir dağıtım neden olur:

  • Uygulama barındırma sistemindeki yanlış klasöre dağıtıldı.
  • Dağıtım işlemi, uygulamanın tüm dosya ve klasörlerini barındırma sistemindeki dağıtım klasörüne taşıyamadı.
  • Web.config dosyası dağıtımda eksik veya web.config dosyası içeriği yanlış biçimlendirilmiş.

Aşağıdaki adımları gerçekleştirin:

  1. Barındırma sistemindeki dağıtım klasöründeki tüm dosya ve klasörleri silin.
  2. Visual Studio, PowerShell veya el ile dağıtım gibi normal dağıtım yönteminizi kullanarak uygulamanın yayımlama klasörünün içeriğini barındırma sistemine yeniden dağıtın:
    • Web.config dosyasının dağıtımda mevcut olduğunu ve içeriğinin doğru olduğunu onaylayın.
    • Azure Uygulaması Hizmetinde barındırırken, uygulamanın klasöre D:\home\site\wwwroot dağıtıldığını onaylayın.
    • Uygulama IIS tarafından barındırıldığında, uygulamanın IIS Yöneticisi'nin Temel Ayarlar gösterilen IIS Fiziksel yoluna dağıtıldığını onaylayın.
  3. Barındırma sistemindeki dağıtımı projenin yayımlama klasörünün içeriğiyle karşılaştırarak uygulamanın tüm dosya ve klasörlerinin dağıtıldığını onaylayın.

Yayımlanan ASP.NET Core uygulamasının düzeni hakkında daha fazla bilgi için bkz . ASP.NET Core dizin yapısı. web.config dosyası hakkında daha fazla bilgi için bkz. IIS için ASP.NET Çekirdek Modülü (ANCM).

500 İç Sunucu Hatası

Uygulama başlatılır, ancak bir hata sunucunun isteği karşılamasını engeller.

Bu hata, başlatma sırasında veya yanıt oluşturulurken uygulamanın kodunda oluşur. Yanıt içerik içermeyebilir veya yanıt tarayıcıda 500 İç Sunucu Hatası olarak görünebilir. Uygulama Olay Günlüğü genellikle uygulamanın normal şekilde başlatıldığını belirtir. Sunucunun perspektifinden bakıldığında bu doğrudur. Uygulama başladı, ancak geçerli bir yanıt oluşturamıyor. Uygulamayı sunucuda bir komut isteminde çalıştırın veya sorunu gidermek için ASP.NET Core Module stdout günlüğünü etkinleştirin.

Bu hata, .NET Core Barındırma Paketi yüklenmediğinde veya bozuk olduğunda da oluşabilir. .NET Core Barındırma Paketinin (IIS için) veya Visual Studio'nun (IIS Express için) yüklenmesi veya onarılması sorunu çözebilir.

500.0 İşlem İçi İşleyici Yükleme Hatası

Çalışan işlemi başarısız oluyor. Uygulama başlatılmıyor.

Çekirdek Modül bileşenleri ASP.NET yüklenirken bilinmeyen bir hata oluştu. Aşağıdaki eylemlerden birini uygulayın:

500.30 İşlem İçi Başlatma Hatası

Çalışan işlemi başarısız oluyor. Uygulama başlatılmıyor.

ASP.NET Core Modülü işlem sırasında .NET Core CLR'yi başlatmayı dener, ancak başlatılamaz. İşlem başlatma hatasının nedeni genellikle Uygulama Olay Günlüğü ve ASP.NET Çekirdek Modülü stdout günlüğündeki girdilerden belirlenebilir.

Yaygın hata koşulları:

  • ASP.NET Core paylaşılan çerçevesinin mevcut olmayan bir sürümünü hedeflemesi nedeniyle uygulama yanlış yapılandırılmış. Hedef makinede ASP.NET Core paylaşılan çerçevesinin hangi sürümlerinin yüklü olduğunu denetleyin.
  • Azure Key Vault'un kullanılması, Key Vault için izinlerin olmaması. Doğru izinlerin verildiğinden emin olmak için hedeflenen Key Vault'taki erişim ilkelerini denetleyin.

500.31 ANCM Yerel Bağımlılıkları Bulamadı

Çalışan işlemi başarısız oluyor. Uygulama başlatılmıyor.

ASP.NET Core Modülü.NET Core çalışma zamanını işlem içinde başlatmayı dener, ancak başlatılamaz. Bu başlatma hatasının en yaygın nedeni, veya Microsoft.AspNetCore.App çalışma zamanının Microsoft.NETCore.App yüklenmemesidir. Uygulama ASP.NET Core 3.0 hedefine dağıtıldıysa ve bu sürüm makinede yoksa, bu hata oluşur. Örnek bir hata iletisi aşağıda verilmiştir:

The specified framework 'Microsoft.NETCore.App', version '3.0.0' was not found.
  - The following frameworks were found:
      2.2.1 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview5-27626-15 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27713-13 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27714-15 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]
      3.0.0-preview6-27723-08 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]

Hata iletisi, yüklü tüm .NET Core sürümlerini ve uygulama tarafından istenen sürümü listeler. Bu hatayı düzeltmek için:

  • Makineye uygun .NET Core sürümünü yükleyin.
  • Uygulamayı, makinede bulunan bir .NET Core sürümünü hedeflemek için değiştirin.
  • Uygulamayı bağımsız dağıtım olarak yayımlayın.

Geliştirme sırasında çalışırken ( ASPNETCORE_ENVIRONMENT ortam değişkeni olarak Developmentayarlanır), belirli bir hata HTTP yanıtına yazılır. İşlem başlatma hatasının nedeni, Uygulama Olay Günlüğü'nde de bulunur.

500.32 ANCM Dll Yüklenemedi

Çalışan işlemi başarısız oluyor. Uygulama başlatılmıyor.

Bu hatanın en yaygın nedeni, uygulamanın uyumsuz bir işlemci mimarisi için yayımlanmasıdır. Çalışan işlemi 32 bit uygulama olarak çalışıyorsa ve uygulama hedef 64 bit olarak yayımlandıysa, bu hata oluşur.

Bu hatayı düzeltmek için:

  • Çalışan işlemiyle aynı işlemci mimarisi için uygulamayı yeniden yayımlayın.
  • Uygulamayı çerçeveye bağımlı dağıtım olarak yayımlayın.

500.33 ANCM İstek İşleyicisi Yükleme Hatası

Çalışan işlemi başarısız oluyor. Uygulama başlatılmıyor.

Uygulama çerçeveye Microsoft.AspNetCore.App başvurmadı. yalnızca çerçeveyi Microsoft.AspNetCore.App hedefleyen uygulamalar ASP.NET Çekirdek Modülü tarafından barındırılabilir.

Bu hatayı düzeltmek için uygulamanın çerçeveyi hedeflediğini Microsoft.AspNetCore.App onaylayın. .runtimeconfig.json Uygulamanın hedeflediği çerçeveyi doğrulamak için öğesini denetleyin.

500.34 ANCM Karma Barındırma Modelleri Desteklenmiyor

Çalışan işlemi hem işlem içi hem de işlem dışı bir uygulamayı aynı işlemde çalıştıramaz.

Bu hatayı düzeltmek için uygulamaları ayrı IIS uygulama havuzlarında çalıştırın.

500.35 ANCM Aynı İşlemde Birden Çok İşlem İçi Uygulama

Çalışan işlemi aynı işlemde birden çok işlem içi uygulama çalıştıramaz.

Bu hatayı düzeltmek için uygulamaları ayrı IIS uygulama havuzlarında çalıştırın.

500.36 ANCM İşlem Dışı İşleyici Yük Hatası

İşlem dışı istek işleyicisi aspnetcorev2_outofprocess.dll, aspnetcorev2.dll dosyasının yanında değildir. Bu, ASP.NET Çekirdek Modülünün bozuk yüklemesini gösterir.

Bu hatayı düzeltmek için .NET Core Barındırma Paketi (IIS için) veya Visual Studio (IIS Express için) yüklemesini onarın.

500.37 ANCM Başlangıç Süresi Sınırı İçinde Başlatılamadı

ANCM, sağlanan başlangıç süresi sınırı içinde başlatılamadı. Varsayılan olarak, zaman aşımı 120 saniyedir.

Bu hata, aynı makinede çok sayıda uygulama başlatılırken oluşabilir. Başlatma sırasında sunucuda CPU/Bellek kullanımı artışlarını denetleyin. Birden çok uygulamanın başlangıç işlemini aşamalı olarak gerçekleştirmeniz gerekebilir.

500.38 ANCM Uygulama DLL'i Bulunamadı

ANCM, yürütülebilir dosyanın yanında olması gereken uygulama DLL'sini bulamadı.

Bu hata, işlem içi barındırma modeli kullanılarak tek dosyalı yürütülebilir dosya olarak paketlenmiş bir uygulama barındırılırken oluşur. İşlem içi model, ANCM'nin .NET Core uygulamasını mevcut IIS işlemine yüklemesini gerektirir. Bu senaryo tek dosyalı dağıtım modeli tarafından desteklenmez. Bu hatayı düzeltmek için uygulamanın proje dosyasında aşağıdaki yaklaşımlardan birini kullanın:

  1. MSBuild özelliğini falseolarak ayarlayarak tek dosyalı yayımlamayı PublishSingleFile devre dışı bırakın.
  2. MSBuild özelliğini olarak ayarlayarak işlem dışı barındırma modeline AspNetCoreHostingModelOutOfProcessgeçin.

502.5 İşlem Hatası

Çalışan işlemi başarısız oluyor. Uygulama başlatılmıyor.

ASP.NET Çekirdek Modülü çalışan işlemini başlatmayı dener ancak başlatılamaz. İşlem başlatma hatasının nedeni genellikle Uygulama Olay Günlüğü ve ASP.NET Çekirdek Modülü stdout günlüğündeki girdilerden belirlenebilir.

Yaygın bir hata koşulu, ASP.NET Core paylaşılan çerçevesinin mevcut olmayan bir sürümünü hedefleme nedeniyle uygulamanın yanlış yapılandırılmasıdır. Hedef makinede ASP.NET Core paylaşılan çerçevesinin hangi sürümlerinin yüklü olduğunu denetleyin. Paylaşılan çerçeve, makinede yüklü olan ve gibi Microsoft.AspNetCore.Appbir meta paket tarafından başvurulan derleme kümesidir (.dll dosyaları). Meta paket başvurusu gereken en düşük sürümü belirtebilir. Daha fazla bilgi için bkz . Paylaşılan çerçeve.

Bir barındırma veya uygulama yanlış yapılandırması çalışan işleminin başarısız olmasına neden olduğunda 502.5 İşlem Hatası hata sayfası döndürülür:

Uygulama başlatılamadı (ErrorCode '0x800700c1')

EventID: 1010
Source: IIS AspNetCore Module V2
Failed to start application '/LM/W3SVC/6/ROOT/', ErrorCode '0x800700c1'.

Uygulamanın derlemesi (.dll) yüklenemediğinden uygulama başlatılamadı.

Bu hata, yayımlanan uygulama ile w3wp/iisexpress işlemi arasında bir bitlik uyumsuzluğu olduğunda oluşur.

Uygulama havuzunun 32 bit ayarının doğru olduğunu onaylayın:

  1. IIS Yöneticisi'nin Uygulama Havuzları'nda uygulama havuzunu seçin.
  2. Eylemler panelindeki Uygulama Havuzunu Düzenle'nin altında Gelişmiş Ayarlar'i seçin.
  3. 32 Bit Uygulamaları Etkinleştir'i ayarlayın:
    • 32 bit (x86) bir uygulama dağıtıyorsanız, değerini olarak Trueayarlayın.
    • 64 bit (x64) bir uygulama dağıtıyorsanız, değerini olarak Falseayarlayın.

Proje dosyasındaki bir <Platform> MSBuild özelliği ile uygulamanın yayımlanan bitliği arasında çakışma olmadığını onaylayın.

Uygulama başlatılamadı (ErrorCode '0x800701b1')

EventID: 1010
Source: IIS AspNetCore Module V2
Failed to start application '/LM/W3SVC/3/ROOT', ErrorCode '0x800701b1'.

Bir Windows Hizmeti yüklenemediği için uygulama başlatılamadı.

Etkinleştirilmesi gereken yaygın hizmetlerden biri "null" hizmetidir. Aşağıdaki komut Windows Hizmetini etkinleştirir null :

sc.exe start null

Bağlan sıfırlama

Üst bilgiler gönderildikten sonra bir hata oluşursa, hata oluştuğunda sunucunun 500 İç Sunucu Hatası göndermesi çok geç olur. Bu durum genellikle bir yanıt için karmaşık nesnelerin seri hale getirilmesi sırasında bir hata oluştuğunda oluşur. Bu tür bir hata, istemcide bağlantı sıfırlama hatası olarak görünür. Uygulama günlüğü bu tür hataları gidermeye yardımcı olabilir.

Varsayılan başlangıç sınırları

ASP.NET Çekirdek Modülü, varsayılan startupTimeLimit değeri 120 saniye ile yapılandırılır. Varsayılan değerde bırakıldığında, modülün işlem hatasını günlüğe kaydedebilmesi için uygulamanın başlatılması iki dakika kadar sürebilir. Modülü yapılandırma hakkında bilgi için bkz . aspNetCore öğesinin öznitelikleri.

Azure Uygulaması Hizmetinde sorun giderme

Önemli

Azure Uygulaması Hizmeti ile ASP.NET Core önizleme sürümleri

ASP.NET Core önizleme sürümleri varsayılan olarak Azure Uygulaması Hizmetine dağıtılmaz. ASP.NET Core önizleme sürümünü kullanan bir uygulamayı barındırmak için bkz. Azure Uygulaması Hizmetine ASP.NET Core önizleme sürümünü dağıtma.

Azure Uygulaması Services Günlük akışı

Azure Uygulaması Hizmetleri Günlüğü, günlüğe kaydetme bilgilerini gerçekleşirken akışla aktarır. Akış günlüklerini görüntülemek için:

  1. Azure portalında uygulamayı App Services'te açın.
  2. Sol bölmede App Service Günlüklerini İzleme'ye >gidin. App Service Logs
  3. Web Sunucusu Günlüğü için Dosya Sistemi'ne tıklayın. İsteğe bağlı olarak Uygulama günlüğünü etkinleştirin. enable logging
  4. Sol bölmede İzleme>Günlüğü akışı'na gidin ve uygulama günlükleri'ni veya Web Sunucusu Günlükleri'ni seçin.

Monitoring Log stream

Aşağıdaki görüntüler uygulama günlüklerinin çıkışını gösterir:

app logs

Akış günlükleri biraz gecikme süresine sahiptir ve hemen görüntülenmeyebilir.

Uygulama Olay Günlüğü (Azure Uygulaması Hizmeti)

Uygulama Olay Günlüğü'ne erişmek için Azure portalındaki Sorunları tanılama ve çözme dikey penceresini kullanın:

  1. Azure portalında uygulamayı App Services'te açın.
  2. Sorunları tanılama ve çözme'yi seçin.
  3. Tanılama Araçları başlığını seçin.
  4. Destek Araçları'nın altında Uygulama Olayları düğmesini seçin.
  5. Kaynak sütununda IIS AspNetCoreModule veya IIS AspNetCoreModule V2 girdisi tarafından sağlanan en son hatayı inceleyin.

Sorunları tanılama ve çözme dikey penceresini kullanmanın bir alternatifi, Uygulama Olay Günlüğü dosyasını kudu kullanarak doğrudan incelemektir:

  1. Geliştirme Araçları alanında Gelişmiş Araçlar'agidin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
  3. LogFiles klasörünü açın.
  4. Dosyanın yanındaki eventlog.xml kalem simgesini seçin.
  5. Günlüğü inceleyin. En son olayları görmek için günlüğün en altına kaydırın.

Uygulamayı Kudu konsolunda çalıştırma

Birçok başlatma hatası, Uygulama Olay Günlüğü'nde yararlı bilgiler üretmez. Hatayı bulmak için uygulamayı Kudu Uzaktan Yürütme Konsolu'nda çalıştırabilirsiniz:

  1. Geliştirme Araçları alanında Gelişmiş Araçlar'agidin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.

32 bit (x86) bir uygulamayı test edin

Geçerli sürüm

  1. cd d:\home\site\wwwroot
  2. Uygulamayı çalıştırın:
    • Uygulama çerçeveye bağımlı bir dağıtımsa:

      dotnet .\{ASSEMBLY NAME}.dll
      
    • Uygulama bağımsız bir dağıtımsa:

      {ASSEMBLY NAME}.exe
      

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

Önizleme sürümünde çalışan çerçeveye bağımlı dağıtım

ASP.NET Core {VERSION} (x86) Çalışma Zamanı site uzantısının yüklenmesini gerektirir.

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x32 ({X.Y} çalışma zamanı sürümüdür)
  2. Uygulamayı çalıştırın: dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

64 bit (x64) uygulamasını test edin

Geçerli sürüm

  • Uygulama 64 bit (x64) çerçeveye bağımlı bir dağıtımsa:
    1. cd D:\Program Files\dotnet
    2. Uygulamayı çalıştırın: dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll
  • Uygulama bağımsız bir dağıtımsa:
    1. cd D:\home\site\wwwroot
    2. Uygulamayı çalıştırın: {ASSEMBLY NAME}.exe

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

Önizleme sürümünde çalışan çerçeveye bağımlı dağıtım

ASP.NET Core {VERSION} (x64) Çalışma Zamanı site uzantısının yüklenmesini gerektirir.

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64 ({X.Y} çalışma zamanı sürümüdür)
  2. Uygulamayı çalıştırın: dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

ASP.NET Core Module stdout günlüğü (Azure Uygulaması Hizmeti)

Uyarı

stdout günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu veya oluşturulan günlük dosyalarının sayısıyla ilgili bir sınır yoktur. Uygulama başlatma sorunlarını gidermek için yalnızca stdout günlüğünü kullanın.

ASP.NET Core uygulamasında başlangıçtan sonra genel günlük kaydı için, günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

ASP.NET Core Module stdout günlüğü genellikle Uygulama Olay Günlüğü'nde bulunmayan yararlı hata iletilerini kaydeder. stdout günlüklerini etkinleştirmek ve görüntülemek için:

  1. Azure Portalı'nda web uygulamasına gidin.
  2. App Service dikey penceresinde, arama kutusuna kudu yazın.
  3. Gelişmiş Araçlar>Git'i seçin.
  4. Hata ayıklama konsolu > CMD'lerini seçin.
  5. siteye/wwwroot adresine gidin
  6. Web.config dosyasını düzenlemek için kalem simgesini seçin.
  7. öğesinde <aspNetCore /> Kaydet'i ayarlayın stdoutLogEnabled="true" ve seçin.

ayarlayarak stdoutLogEnabled="false"sorun giderme tamamlandığında stdout günlüğünü devre dışı bırakın.

Daha fazla bilgi için bkz. IIS için ASP.NET Core Modülü (ANCM).

ASP.NET Çekirdek Modülü hata ayıklama günlüğü (Azure Uygulaması Hizmeti)

ASP.NET Çekirdek Modülü hata ayıklama günlüğü, ASP.NET Core Modülü'nden ek ve daha derin günlüğe kaydetme sağlar. stdout günlüklerini etkinleştirmek ve görüntülemek için:

  1. Gelişmiş tanılama günlüğünü etkinleştirmek için aşağıdakilerden birini gerçekleştirin:
    • Uygulamayı gelişmiş tanılama günlüğü için yapılandırmak için Gelişmiş tanılama günlükleri'ndeki yönergeleri izleyin. Uygulamayı yeniden dağıtın.
    • Gelişmiş tanılama günlüklerinde gösterileni <handlerSettings> Kudu konsolunu kullanarak canlı uygulamanın web.config dosyasına ekleyin:
      1. Geliştirme Araçları alanında Gelişmiş Araçlar'agidin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
      2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
      3. Klasörleri wwwroot yol sitesine>açın. Kalem düğmesini seçerek web.config dosyasını düzenleyin. <handlerSettings> Gelişmiş tanılama günlüklerinde gösterildiği gibi bölümü ekleyin. Kaydet düğmesini seçin.
  2. Geliştirme Araçları alanında Gelişmiş Araçlar'agidin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  3. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
  4. Klasörleri wwwroot yol sitesine>açın. aspnetcore-debug.log dosyası için bir yol sağlamadıysanız, dosya listede görünür. Bir yol sağladıysanız günlük dosyasının konumuna gidin.
  5. Günlük dosyasını, dosya adının yanındaki kalem düğmesiyle açın.

Sorun giderme tamamlandığında hata ayıklama günlüğünü devre dışı bırakın:

Gelişmiş hata ayıklama günlüğünü devre dışı bırakmak için aşağıdakilerden birini gerçekleştirin:

  • <handlerSettings> web.config dosyasından yerel olarak öğesini kaldırın ve uygulamayı yeniden dağıtın.
  • Web.config dosyasını düzenlemek ve bölümü kaldırmak için Kudu konsolunu <handlerSettings> kullanın. Dosyayı kaydedin.

Daha fazla bilgi için bkz . ASP.NET Çekirdek Modülü ile günlük oluşturma ve yeniden yönlendirme.

Uyarı

Hata ayıklama günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu sınırı yoktur. Yalnızca uygulama başlatma sorunlarını gidermek için hata ayıklama günlüğünü kullanın.

ASP.NET Core uygulamasında başlangıçtan sonra genel günlük kaydı için, günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

Yavaş veya asılı uygulama (Azure Uygulaması Hizmeti)

Bir uygulama yavaş yanıt verince veya istekte yanıt vermemeye başladığında bkz. Azure Uygulaması Hizmeti'nde yavaş web uygulaması performans sorunlarını giderme.

İzleme dikey pencereleri

İzleme dikey pencereleri, konunun önceki bölümlerinde açıklanan yöntemlere alternatif bir sorun giderme deneyimi sağlar. Bu dikey değişkenler 500 serisi hataları tanılamak için kullanılabilir.

ASP.NET Çekirdek Uzantıları'nın yüklendiğini onaylayın. Uzantılar yüklü değilse el ile yükleyin:

  1. GELİrME ARAÇLARI dikey penceresinde Uzantılar dikey penceresini seçin.
  2. ASP.NET Çekirdek Uzantıları listede görünmelidir.
  3. Uzantılar yüklü değilse Ekle düğmesini seçin.
  4. Listeden ASP.NET Çekirdek Uzantıları'nı seçin.
  5. Yasal koşulları kabul etmek için Tamam’ı seçin.
  6. Uzantı ekle dikey penceresinde Tamam'ı seçin.
  7. Uzantıların ne zaman başarıyla yüklendiğini gösteren bilgi amaçlı bir açılır ileti.

stdout günlüğü etkinleştirilmediyse şu adımları izleyin:

  1. Azure portalında, GELİşTİrME ARAÇLARI alanında Gelişmiş Araçlar dikey penceresini seçin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
  3. Klasörleri wwwroot yol sitesine>açın ve listenin en altındaki web.config dosyasını görüntülemek için aşağı kaydırın.
  4. Web.config dosyasının yanındaki kalem simgesine tıklayın.
  5. stdoutLogEnabled değerini olarak ayarlayın ve stdoutLogFile yolunu olarak değiştirin: \\?\%home%\LogFiles\stdout.true
  6. Güncelleştirilmiş web.config dosyasını kaydetmek için Kaydet'i seçin.

Tanılama günlüğünü etkinleştirmeye devam edin:

  1. Azure portalında Tanılama günlükleri dikey penceresini seçin.
  2. Uygulama Günlüğü (Dosya Sistemi) ve Ayrıntılı hata iletileri için Açık anahtarını seçin. Dikey penceresinin üst kısmındaki Kaydet düğmesini seçin.
  3. Başarısız İstek Olayı Arabelleğe Alma (FREB) günlüğü olarak da bilinen başarısız istek izlemeyi eklemek için Başarısız istek izleme için Açık anahtarını seçin.
  4. Portaldaki Tanılama günlükleri dikey penceresinin hemen altında listelenen Günlük akışı dikey penceresini seçin.
  5. Uygulamaya bir istekte bulunın.
  6. Günlük akışı verilerinin içinde hatanın nedeni belirtilir.

Sorun giderme tamamlandığında stdout günlüğünü devre dışı bırakdığınızdan emin olun.

Başarısız istek izleme günlüklerini (FREB günlükleri) görüntülemek için:

  1. Azure portalında Sorunları tanılama ve çözme dikey penceresine gidin.
  2. Kenar çubuğunun DESTEK ARAÇLARI alanından Başarısız İstek İzleme Günlükleri'ni seçin.

Daha fazla bilgi için Azure Uygulaması Hizmetinde web uygulamaları için tanılama günlüğünü etkinleştirme konusunun Başarısız istek izlemeleri bölümüne ve Azure'da Web Uygulamaları için Uygulama performansı SSS: Nasıl yaparım? başarısız istek izlemeyi açma? bölümüne bakın.

Daha fazla bilgi için bkz. Azure Uygulaması Hizmeti'nde web uygulamaları için tanılama günlüğünü etkinleştirme.

Uyarı

stdout günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu veya oluşturulan günlük dosyalarının sayısıyla ilgili bir sınır yoktur.

ASP.NET Core uygulamasında rutin günlük kaydı için günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

IIS üzerinde sorun giderme

Uygulama Olay Günlüğü (IIS)

Uygulama Olay Günlüğü'ne erişin:

  1. Başlat menüsü açın, Olay Görüntüleyicisi arayın ve Olay Görüntüleyicisi uygulamasını seçin.
  2. Olay Görüntüleyicisi'da Windows Günlükleri düğümünü açın.
  3. Uygulama Olay Günlüğü'nü açmak için Uygulama'ya tıklayın.
  4. Başarısız uygulamayla ilişkili hataları arayın. Hatalar, Kaynak sütununda IIS AspNetCore Modülü veya IIS Express AspNetCore Modülü değerine sahiptir.

Uygulamayı komut isteminde çalıştırma

Birçok başlatma hatası, Uygulama Olay Günlüğü'nde yararlı bilgiler üretmez. Uygulamayı barındırma sisteminde bir komut isteminde çalıştırarak bazı hataların nedenini bulabilirsiniz.

Çerçeveye bağımlı dağıtım

Uygulama çerçeveye bağımlı bir dağıtımsa:

  1. Komut isteminde dağıtım klasörüne gidin ve uygulamanın derlemesini dotnet.exe ile yürüterek uygulamayı çalıştırın. Aşağıdaki komutta, assembly_name> için <uygulama derlemesinin adını kullanın: dotnet .\<assembly_name>.dll.
  2. Herhangi bir hatayı gösteren uygulamadan konsol çıkışı konsol penceresine yazılır.
  3. Uygulamaya istekte bulunurken hatalar oluşursa, dinlediği Kestrel ana bilgisayara ve bağlantı noktasına bir istekte bulunabilirsiniz. Varsayılan ana bilgisayar ve gönderiyi kullanarak adresine http://localhost:5000/bir istek gönderin. Uygulama uç nokta adresinde normal şekilde Kestrel yanıt veriyorsa, sorun büyük olasılıkla barındırma yapılandırmasıyla ilgilidir ve uygulama içinde daha az olasıdır.

Bağımsız dağıtım

Uygulama bağımsız bir dağıtımsa:

  1. Komut isteminde dağıtım klasörüne gidin ve uygulamanın yürütülebilir dosyasını çalıştırın. Aşağıdaki komutta, assembly_name> için <uygulama derlemesinin adını kullanın: <assembly_name>.exe.
  2. Herhangi bir hatayı gösteren uygulamadan konsol çıkışı konsol penceresine yazılır.
  3. Uygulamaya istekte bulunurken hatalar oluşursa, dinlediği Kestrel ana bilgisayara ve bağlantı noktasına bir istekte bulunabilirsiniz. Varsayılan ana bilgisayar ve gönderiyi kullanarak adresine http://localhost:5000/bir istek gönderin. Uygulama uç nokta adresinde normal şekilde Kestrel yanıt veriyorsa, sorun büyük olasılıkla barındırma yapılandırmasıyla ilgilidir ve uygulama içinde daha az olasıdır.

ASP.NET Core Module stdout günlüğü (IIS)

stdout günlüklerini etkinleştirmek ve görüntülemek için:

  1. Barındırma sistemindeki sitenin dağıtım klasörüne gidin.
  2. Günlükler klasörü yoksa klasörü oluşturun. MSBuild'in dağıtımda günlükler klasörünü otomatik olarak oluşturmasını etkinleştirme yönergeleri için Dizin yapısı konusuna bakın.
  3. web.config dosyasını düzenleyin. stdoutLogEnabled olarak ayarlayın ve stdoutLogFile yolunu logs klasörüne işaret edecek şekilde değiştirin (örneğin, .\logs\stdout).true stdout yolunda günlük dosyası adı ön eki bulunur. Günlük oluşturulduğunda zaman damgası, işlem kimliği ve dosya uzantısı otomatik olarak eklenir. Dosya stdout adı ön eki olarak kullanıldığında, tipik bir günlük dosyası stdout_20180205184032_5412.log olarak adlandırılır.
  4. Uygulama havuzunuzun kimliğinin günlükler klasörüne yazma izinlerine sahip olduğundan emin olun.
  5. Güncelleştirilmiş web.config dosyasını kaydedin.
  6. Uygulamaya bir istekte bulunın.
  7. Günlükler klasörüne gidin. En son stdout günlüğünü bulun ve açın.
  8. Hatalar için günlüğü inceleyin.

Sorun giderme tamamlandığında stdout günlüğünü devre dışı bırakın:

  1. web.config dosyasını düzenleyin.
  2. stdoutLogEnabled değerini olarak falseayarlayın.
  3. Dosyayı kaydedin.

Daha fazla bilgi için bkz. IIS için ASP.NET Core Modülü (ANCM).

Uyarı

stdout günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu veya oluşturulan günlük dosyalarının sayısıyla ilgili bir sınır yoktur.

ASP.NET Core uygulamasında rutin günlük kaydı için günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

ASP.NET Çekirdek Modülü hata ayıklama günlüğü (IIS)

ASP.NET Çekirdek Modülü hata ayıklama günlüğünü etkinleştirmek için uygulamanın web.config dosyasına aşağıdaki işleyici ayarlarını ekleyin:

<aspNetCore ...>
  <handlerSettings>
    <handlerSetting name="debugLevel" value="file" />
    <handlerSetting name="debugFile" value="c:\temp\ancm.log" />
  </handlerSettings>
</aspNetCore>

Günlük için belirtilen yolun mevcut olduğunu ve uygulama havuzunun kimliğinin konuma yazma izinlerine sahip olduğunu onaylayın.

Daha fazla bilgi için bkz . ASP.NET Çekirdek Modülü ile günlük oluşturma ve yeniden yönlendirme.

Geliştirici Özel Durum Sayfasını Etkinleştirme

Ortam ASPNETCORE_ENVIRONMENTdeğişkeni, uygulamayı Geliştirme ortamında çalıştırmak için web.config'e eklenebilir. Konak oluşturucusunda uygulama başlangıcında UseEnvironment ortam geçersiz kılınmadığı sürece ortam değişkeninin ayarlanması, uygulama çalıştırıldığında Geliştirici Özel Durum Sayfası'nın görüntülenmesine olanak tanır.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="InProcess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>

ortam değişkeninin ASPNETCORE_ENVIRONMENT ayarlanması yalnızca İnternet'e sunulmamış hazırlama ve test sunucularında kullanılması önerilir. Sorun giderme sonrasında web.config dosyasından ortam değişkenini kaldırın. web.config içinde ortam değişkenlerini ayarlama hakkında bilgi için bkz. aspNetCore'un environmentVariables alt öğesi.

Bir uygulamadan veri alma

Bir uygulama isteklere yanıt verebilen bir uygulamaysa, terminal satır içi ara yazılımını kullanarak uygulamadan istek, bağlantı ve ek veriler alın. Daha fazla bilgi ve örnek kod için bkz . Çekirdek projelerde sorun giderme ve hata ayıklama ASP.NET.

Yavaş veya asılı uygulama (IIS)

Kilitlenme bilgi dökümü, sistem belleğinin anlık görüntüsüdür ve uygulama kilitlenmesinin, başlatma hatasının veya yavaş uygulamanın nedenini belirlemeye yardımcı olabilir.

Uygulama kilitleniyor veya bir özel durumla karşılaşıyor

Windows Hata Bildirimi (WER) dökümünü alma ve analiz etme:

  1. kilitlenme dökümü dosyalarının konumunda c:\dumpstutulacağı bir klasör oluşturun. Uygulama havuzunun klasöre yazma erişimi olmalıdır.

  2. EnableDumps PowerShell betiğini çalıştırın:

    • Uygulama işlem içi barındırma modelini kullanıyorsa w3wp.exe için betiği çalıştırın:

      .\EnableDumps w3wp.exe c:\dumps
      
    • Uygulama işlem dışı barındırma modelini kullanıyorsa dotnet.exe için betiği çalıştırın:

      .\EnableDumps dotnet.exe c:\dumps
      
  3. Kilitlenmeye neden olan koşullar altında uygulamayı çalıştırın.

  4. Kilitlenme oluştuktan sonra DisableDumps PowerShell betiğini çalıştırın:

    • Uygulama işlem içi barındırma modelini kullanıyorsa w3wp.exe için betiği çalıştırın:

      .\DisableDumps w3wp.exe
      
    • Uygulama işlem dışı barındırma modelini kullanıyorsa dotnet.exe için betiği çalıştırın:

      .\DisableDumps dotnet.exe
      

Bir uygulama kilitlenip döküm toplama işlemi tamamlandıktan sonra uygulamanın normal şekilde sonlandırılmasına izin verilir. PowerShell betiği, WER'yi uygulama başına en fazla beş döküm toplayacak şekilde yapılandırır.

Uyarı

Kilitlenme bilgi dökümleri büyük miktarda disk alanı kaplayabilir (her biri birkaç gigabayta kadar).

Uygulama askıda kalıyor, başlatma sırasında başarısız oluyor veya normal şekilde çalışıyor

Uygulama yanıt vermemeye başladığında (yanıt vermeyi durdurduğunda ancak kilitlenmediğinde), başlatma sırasında başarısız olduğunda veya normal şekilde çalıştığında bkz . Kullanıcı Modu Döküm Dosyaları: Dökümü oluşturmak için uygun bir aracı seçmek için En İyi Aracı Seçme.

Dökümü analiz etme

Döküm, çeşitli yaklaşımlar kullanılarak analiz edilebilir. Daha fazla bilgi için bkz . Kullanıcı Modu Döküm Dosyasını Çözümleme.

Paket önbelleklerini temizleme

Çalışan bir uygulama, geliştirme makinesindeki .NET Core SDK'sını yükselttikten veya uygulama içindeki paket sürümlerini değiştirdikten hemen sonra başarısız olabilir. Bazı durumlarda, tutarsız paketler ana yükseltmeler yaparken bir uygulamayı bozabilir. Bu sorunların çoğu şu yönergeleri izleyerek düzeltilebilir:

  1. Bölme ve obj klasörlerini silin.

  2. dotnet nuget locals all --clear komutunu komut kabuğundan yürüterek paket önbelleklerini temizleyin .

    Paket önbelleklerini temizleme işlemi nuget.exe aracıyla ve komutu nuget locals all -clearyürütülerek de gerçekleştirilebilir. nuget.exe, Windows masaüstü işletim sistemiyle paketlenmiş bir yükleme değildir ve NuGet web sitesinden ayrı olarak alınmalıdır.

  3. Projeyi geri yükleyin ve yeniden oluşturun.

  4. Uygulamayı yeniden dağıtmadan önce sunucudaki dağıtım klasöründeki tüm dosyaları silin.

Ek kaynaklar

Azure belgeleri

Visual Studio belgeleri

Visual Studio Code belgeleri

Bu makalede, yaygın uygulama başlatma hataları hakkında bilgi ve bir uygulama Azure Uygulaması Hizmetine veya IIS'ye dağıtıldığında hataları tanılama yönergeleri sağlanır:

Uygulama başlatma hataları
Yaygın başlangıç HTTP durum kodu senaryolarını açıklar.

Azure Uygulaması Hizmetinde sorun giderme
Azure Uygulaması Hizmetine dağıtılan uygulamalar için sorun giderme önerileri sağlar.

IIS üzerinde sorun giderme
IIS'ye dağıtılan veya IIS Express'te yerel olarak çalıştırılan uygulamalar için sorun giderme önerileri sağlar. Bu kılavuz hem Windows Server hem de Windows masaüstü dağıtımları için geçerlidir.

Paket önbelleklerini temizleme
Tutarsız paketler büyük yükseltmeler gerçekleştirirken veya paket sürümlerini değiştirirken bir uygulamayı bozduğunda ne yapacağını açıklar.

Ek Kaynaklar
Ek sorun giderme konularını listeler.

Uygulama başlatma hataları

Visual Studio'da bir ASP.NET Core projesi hata ayıklama sırasında iis express barındırma olarak varsayılan olarak kullanılır. A 502.5 - İşlem Hatası veya 500.30 - Yerel olarak hata ayıklama sırasında oluşan Başlatma Hatası bu konudaki öneriler kullanılarak tanılanabilir.

403.14 Yasak

Uygulama başlatılamıyor. Aşağıdaki hata günlüğe kaydedilir:

The Web server is configured to not list the contents of this directory.

Hataya genellikle aşağıdaki senaryolardan herhangi birini içeren barındırma sistemindeki bozuk bir dağıtım neden olur:

  • Uygulama barındırma sistemindeki yanlış klasöre dağıtıldı.
  • Dağıtım işlemi, uygulamanın tüm dosya ve klasörlerini barındırma sistemindeki dağıtım klasörüne taşıyamadı.
  • Web.config dosyası dağıtımda eksik veya web.config dosyası içeriği yanlış biçimlendirilmiş.

Aşağıdaki adımları gerçekleştirin:

  1. Barındırma sistemindeki dağıtım klasöründeki tüm dosya ve klasörleri silin.
  2. Visual Studio, PowerShell veya el ile dağıtım gibi normal dağıtım yönteminizi kullanarak uygulamanın yayımlama klasörünün içeriğini barındırma sistemine yeniden dağıtın:
    • Web.config dosyasının dağıtımda mevcut olduğunu ve içeriğinin doğru olduğunu onaylayın.
    • Azure Uygulaması Hizmetinde barındırırken, uygulamanın klasöre D:\home\site\wwwroot dağıtıldığını onaylayın.
    • Uygulama IIS tarafından barındırıldığında, uygulamanın IIS Yöneticisi'nin Temel Ayarlar gösterilen IIS Fiziksel yoluna dağıtıldığını onaylayın.
  3. Barındırma sistemindeki dağıtımı projenin yayımlama klasörünün içeriğiyle karşılaştırarak uygulamanın tüm dosya ve klasörlerinin dağıtıldığını onaylayın.

Yayımlanan ASP.NET Core uygulamasının düzeni hakkında daha fazla bilgi için bkz . ASP.NET Core dizin yapısı. web.config dosyası hakkında daha fazla bilgi için bkz. IIS için ASP.NET Çekirdek Modülü (ANCM).

500 İç Sunucu Hatası

Uygulama başlatılır, ancak bir hata sunucunun isteği karşılamasını engeller.

Bu hata, başlatma sırasında veya yanıt oluşturulurken uygulamanın kodunda oluşur. Yanıt içerik içermeyebilir veya yanıt tarayıcıda 500 İç Sunucu Hatası olarak görünebilir. Uygulama Olay Günlüğü genellikle uygulamanın normal şekilde başlatıldığını belirtir. Sunucunun perspektifinden bakıldığında bu doğrudur. Uygulama başladı, ancak geçerli bir yanıt oluşturamıyor. Uygulamayı sunucuda bir komut isteminde çalıştırın veya sorunu gidermek için ASP.NET Core Module stdout günlüğünü etkinleştirin.

Bu hata, .NET Core Barındırma Paketi yüklenmediğinde veya bozuk olduğunda da oluşabilir. .NET Core Barındırma Paketinin (IIS için) veya Visual Studio'nun (IIS Express için) yüklenmesi veya onarılması sorunu çözebilir.

500.0 İşlem İçi İşleyici Yükleme Hatası

Çalışan işlemi başarısız oluyor. Uygulama başlatılmıyor.

ASP.NET Core Modülü .NET Core CLR'yi bulamıyor ve işlem içi istek işleyicisini (aspnetcorev2_inprocess.dll) bulamıyor. Aşağıdakileri denetleyin:

500.0 İşlem Dışı İşleyici Yük Hatası

Çalışan işlemi başarısız oluyor. Uygulama başlatılmıyor.

ASP.NET Çekirdek Modülü, işlem dışı barındırma isteği işleyicisini bulamıyor. aspnetcorev2_outofprocess.dll dosyasının aspnetcorev2.dll dosyasının yanındaki bir alt klasörde bulunduğundan emin olun.

502.5 İşlem Hatası

Çalışan işlemi başarısız oluyor. Uygulama başlatılmıyor.

ASP.NET Çekirdek Modülü çalışan işlemini başlatmayı dener ancak başlatılamaz. İşlem başlatma hatasının nedeni genellikle Uygulama Olay Günlüğü ve ASP.NET Çekirdek Modülü stdout günlüğündeki girdilerden belirlenebilir.

Yaygın bir hata koşulu, ASP.NET Core paylaşılan çerçevesinin mevcut olmayan bir sürümünü hedefleme nedeniyle uygulamanın yanlış yapılandırılmasıdır. Hedef makinede ASP.NET Core paylaşılan çerçevesinin hangi sürümlerinin yüklü olduğunu denetleyin. Paylaşılan çerçeve, makinede yüklü olan ve gibi Microsoft.AspNetCore.Appbir meta paket tarafından başvurulan derleme kümesidir (.dll dosyaları). Meta paket başvurusu gereken en düşük sürümü belirtebilir. Daha fazla bilgi için bkz . Paylaşılan çerçeve.

Bir barındırma veya uygulama yanlış yapılandırması çalışan işleminin başarısız olmasına neden olduğunda 502.5 İşlem Hatası hata sayfası döndürülür:

Uygulama başlatılamadı (ErrorCode '0x800700c1')

EventID: 1010
Source: IIS AspNetCore Module V2
Failed to start application '/LM/W3SVC/6/ROOT/', ErrorCode '0x800700c1'.

Uygulamanın derlemesi (.dll) yüklenemediğinden uygulama başlatılamadı.

Bu hata, yayımlanan uygulama ile w3wp/iisexpress işlemi arasında bir bitlik uyumsuzluğu olduğunda oluşur.

Uygulama havuzunun 32 bit ayarının doğru olduğunu onaylayın:

  1. IIS Yöneticisi'nin Uygulama Havuzları'nda uygulama havuzunu seçin.
  2. Eylemler panelindeki Uygulama Havuzunu Düzenle'nin altında Gelişmiş Ayarlar'i seçin.
  3. 32 Bit Uygulamaları Etkinleştir'i ayarlayın:
    • 32 bit (x86) bir uygulama dağıtıyorsanız, değerini olarak Trueayarlayın.
    • 64 bit (x64) bir uygulama dağıtıyorsanız, değerini olarak Falseayarlayın.

Proje dosyasındaki bir <Platform> MSBuild özelliği ile uygulamanın yayımlanan bitliği arasında çakışma olmadığını onaylayın.

Bağlan sıfırlama

Üst bilgiler gönderildikten sonra bir hata oluşursa, hata oluştuğunda sunucunun 500 İç Sunucu Hatası göndermesi çok geç olur. Bu durum genellikle bir yanıt için karmaşık nesnelerin seri hale getirilmesi sırasında bir hata oluştuğunda oluşur. Bu tür bir hata, istemcide bağlantı sıfırlama hatası olarak görünür. Uygulama günlüğü bu tür hataları gidermeye yardımcı olabilir.

Varsayılan başlangıç sınırları

ASP.NET Çekirdek Modülü, varsayılan startupTimeLimit değeri 120 saniye ile yapılandırılır. Varsayılan değerde bırakıldığında, modülün işlem hatasını günlüğe kaydedebilmesi için uygulamanın başlatılması iki dakika kadar sürebilir. Modülü yapılandırma hakkında bilgi için bkz . aspNetCore öğesinin öznitelikleri.

Azure Uygulaması Hizmetinde sorun giderme

Önemli

Azure Uygulaması Hizmeti ile ASP.NET Core önizleme sürümleri

ASP.NET Core önizleme sürümleri varsayılan olarak Azure Uygulaması Hizmetine dağıtılmaz. ASP.NET Core önizleme sürümünü kullanan bir uygulamayı barındırmak için bkz. Azure Uygulaması Hizmetine ASP.NET Core önizleme sürümünü dağıtma.

Uygulama Olay Günlüğü (Azure Uygulaması Hizmeti)

Uygulama Olay Günlüğü'ne erişmek için Azure portalındaki Sorunları tanılama ve çözme dikey penceresini kullanın:

  1. Azure portalında uygulamayı App Services'te açın.
  2. Sorunları tanılama ve çözme'yi seçin.
  3. Tanılama Araçları başlığını seçin.
  4. Destek Araçları'nın altında Uygulama Olayları düğmesini seçin.
  5. Kaynak sütununda IIS AspNetCoreModule veya IIS AspNetCoreModule V2 girdisi tarafından sağlanan en son hatayı inceleyin.

Sorunları tanılama ve çözme dikey penceresini kullanmanın bir alternatifi, Uygulama Olay Günlüğü dosyasını kudu kullanarak doğrudan incelemektir:

  1. Geliştirme Araçları alanında Gelişmiş Araçlar'agidin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
  3. LogFiles klasörünü açın.
  4. Dosyanın yanındaki eventlog.xml kalem simgesini seçin.
  5. Günlüğü inceleyin. En son olayları görmek için günlüğün en altına kaydırın.

Uygulamayı Kudu konsolunda çalıştırma

Birçok başlatma hatası, Uygulama Olay Günlüğü'nde yararlı bilgiler üretmez. Hatayı bulmak için uygulamayı Kudu Uzaktan Yürütme Konsolu'nda çalıştırabilirsiniz:

  1. Geliştirme Araçları alanında Gelişmiş Araçlar'agidin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.

32 bit (x86) bir uygulamayı test edin

Geçerli sürüm

  1. cd d:\home\site\wwwroot
  2. Uygulamayı çalıştırın:
    • Uygulama çerçeveye bağımlı bir dağıtımsa:

      dotnet .\{ASSEMBLY NAME}.dll
      
    • Uygulama bağımsız bir dağıtımsa:

      {ASSEMBLY NAME}.exe
      

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

Önizleme sürümünde çalışan çerçeveye bağımlı dağıtım

ASP.NET Core {VERSION} (x86) Çalışma Zamanı site uzantısının yüklenmesini gerektirir.

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x32 ({X.Y} çalışma zamanı sürümüdür)
  2. Uygulamayı çalıştırın: dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

64 bit (x64) uygulamasını test edin

Geçerli sürüm

  • Uygulama 64 bit (x64) çerçeveye bağımlı bir dağıtımsa:
    1. cd D:\Program Files\dotnet
    2. Uygulamayı çalıştırın: dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll
  • Uygulama bağımsız bir dağıtımsa:
    1. cd D:\home\site\wwwroot
    2. Uygulamayı çalıştırın: {ASSEMBLY NAME}.exe

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

Önizleme sürümünde çalışan çerçeveye bağımlı dağıtım

ASP.NET Core {VERSION} (x64) Çalışma Zamanı site uzantısının yüklenmesini gerektirir.

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64 ({X.Y} çalışma zamanı sürümüdür)
  2. Uygulamayı çalıştırın: dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

ASP.NET Core Module stdout günlüğü (Azure Uygulaması Hizmeti)

ASP.NET Core Module stdout günlüğü genellikle Uygulama Olay Günlüğü'nde bulunmayan yararlı hata iletilerini kaydeder. stdout günlüklerini etkinleştirmek ve görüntülemek için:

  1. Azure portalında Sorunları tanılama ve çözme dikey penceresine gidin.
  2. SORUN KATEGORİSİ SEÇ altında Web Uygulaması Aşağı düğmesini seçin.
  3. Önerilen Çözümler>Stdout Günlüğü Yeniden Yönlendirmesini Etkinleştir'in altında, Web.Config'i düzenlemek için Kudu Konsolunu Aç düğmesini seçin.
  4. Kudu Tanılama Konsolu'nda wwwroot yol sitesinin>klasörlerini açın. Listenin en altındaki web.config dosyasını görüntülemek için ekranı aşağı kaydırın.
  5. Web.config dosyasının yanındaki kalem simgesine tıklayın.
  6. stdoutLogEnabled değerini olarak ayarlayın ve stdoutLogFile yolunu olarak değiştirin: \\?\%home%\LogFiles\stdout.true
  7. Güncelleştirilmiş web.config dosyasını kaydetmek için Kaydet'i seçin.
  8. Uygulamaya bir istekte bulunın.
  9. Azure portalına dönün. GELİşTİrME ARAÇLARI alanında Gelişmiş Araçlar dikey penceresini seçin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  10. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
  11. LogFiles klasörünü seçin.
  12. Değiştirilmiş sütununu inceleyin ve en son değişiklik tarihiyle stdout günlüğünü düzenlemek için kalem simgesini seçin.
  13. Günlük dosyası açıldığında hata görüntülenir.

Sorun giderme tamamlandığında stdout günlüğünü devre dışı bırakın:

  1. Kudu Tanılama Konsolu'nda wwwroot yol sitesine>dönerek web.config dosyasını açın. Kalem simgesini seçerek web.config dosyasını yeniden açın.
  2. stdoutLogEnabled değerini olarak falseayarlayın.
  3. Dosyayı kaydetmek için Kaydet'i seçin.

Daha fazla bilgi için bkz. IIS için ASP.NET Core Modülü (ANCM).

Uyarı

stdout günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu veya oluşturulan günlük dosyalarının sayısıyla ilgili bir sınır yoktur. Uygulama başlatma sorunlarını gidermek için yalnızca stdout günlüğünü kullanın.

ASP.NET Core uygulamasında başlangıçtan sonra genel günlük kaydı için, günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

ASP.NET Çekirdek Modülü hata ayıklama günlüğü (Azure Uygulaması Hizmeti)

ASP.NET Çekirdek Modülü hata ayıklama günlüğü, ASP.NET Core Modülü'nden ek ve daha derin günlüğe kaydetme sağlar. stdout günlüklerini etkinleştirmek ve görüntülemek için:

  1. Gelişmiş tanılama günlüğünü etkinleştirmek için aşağıdakilerden birini gerçekleştirin:
    • Uygulamayı gelişmiş tanılama günlüğü için yapılandırmak için Gelişmiş tanılama günlükleri'ndeki yönergeleri izleyin. Uygulamayı yeniden dağıtın.
    • Gelişmiş tanılama günlüklerinde gösterileni <handlerSettings> Kudu konsolunu kullanarak canlı uygulamanın web.config dosyasına ekleyin:
      1. Geliştirme Araçları alanında Gelişmiş Araçlar'agidin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
      2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
      3. Klasörleri wwwroot yol sitesine>açın. Kalem düğmesini seçerek web.config dosyasını düzenleyin. <handlerSettings> Gelişmiş tanılama günlüklerinde gösterildiği gibi bölümü ekleyin. Kaydet düğmesini seçin.
  2. Geliştirme Araçları alanında Gelişmiş Araçlar'agidin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  3. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
  4. Klasörleri wwwroot yol sitesine>açın. aspnetcore-debug.log dosyası için bir yol sağlamadıysanız, dosya listede görünür. Bir yol sağladıysanız günlük dosyasının konumuna gidin.
  5. Günlük dosyasını, dosya adının yanındaki kalem düğmesiyle açın.

Sorun giderme tamamlandığında hata ayıklama günlüğünü devre dışı bırakın:

Gelişmiş hata ayıklama günlüğünü devre dışı bırakmak için aşağıdakilerden birini gerçekleştirin:

  • <handlerSettings> web.config dosyasından yerel olarak öğesini kaldırın ve uygulamayı yeniden dağıtın.
  • Web.config dosyasını düzenlemek ve bölümü kaldırmak için Kudu konsolunu <handlerSettings> kullanın. Dosyayı kaydedin.

Daha fazla bilgi için bkz . ASP.NET Çekirdek Modülü ile günlük oluşturma ve yeniden yönlendirme.

Uyarı

Hata ayıklama günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu sınırı yoktur. Yalnızca uygulama başlatma sorunlarını gidermek için hata ayıklama günlüğünü kullanın.

ASP.NET Core uygulamasında başlangıçtan sonra genel günlük kaydı için, günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

Yavaş veya asılı uygulama (Azure Uygulaması Hizmeti)

Bir uygulama yavaş yanıtladığında veya istekte yanıt vermediğinde aşağıdaki makalelere bakın:

İzleme dikey pencereleri

İzleme dikey pencereleri, konunun önceki bölümlerinde açıklanan yöntemlere alternatif bir sorun giderme deneyimi sağlar. Bu dikey değişkenler 500 serisi hataları tanılamak için kullanılabilir.

ASP.NET Çekirdek Uzantıları'nın yüklendiğini onaylayın. Uzantılar yüklü değilse el ile yükleyin:

  1. GELİrME ARAÇLARI dikey penceresinde Uzantılar dikey penceresini seçin.
  2. ASP.NET Çekirdek Uzantıları listede görünmelidir.
  3. Uzantılar yüklü değilse Ekle düğmesini seçin.
  4. Listeden ASP.NET Çekirdek Uzantıları'nı seçin.
  5. Yasal koşulları kabul etmek için Tamam’ı seçin.
  6. Uzantı ekle dikey penceresinde Tamam'ı seçin.
  7. Uzantıların ne zaman başarıyla yüklendiğini gösteren bilgi amaçlı bir açılır ileti.

stdout günlüğü etkinleştirilmediyse şu adımları izleyin:

  1. Azure portalında, GELİşTİrME ARAÇLARI alanında Gelişmiş Araçlar dikey penceresini seçin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
  3. Klasörleri wwwroot yol sitesine>açın ve listenin en altındaki web.config dosyasını görüntülemek için aşağı kaydırın.
  4. Web.config dosyasının yanındaki kalem simgesine tıklayın.
  5. stdoutLogEnabled değerini olarak ayarlayın ve stdoutLogFile yolunu olarak değiştirin: \\?\%home%\LogFiles\stdout.true
  6. Güncelleştirilmiş web.config dosyasını kaydetmek için Kaydet'i seçin.

Tanılama günlüğünü etkinleştirmeye devam edin:

  1. Azure portalında Tanılama günlükleri dikey penceresini seçin.
  2. Uygulama Günlüğü (Dosya Sistemi) ve Ayrıntılı hata iletileri için Açık anahtarını seçin. Dikey penceresinin üst kısmındaki Kaydet düğmesini seçin.
  3. Başarısız İstek Olayı Arabelleğe Alma (FREB) günlüğü olarak da bilinen başarısız istek izlemeyi eklemek için Başarısız istek izleme için Açık anahtarını seçin.
  4. Portaldaki Tanılama günlükleri dikey penceresinin hemen altında listelenen Günlük akışı dikey penceresini seçin.
  5. Uygulamaya bir istekte bulunın.
  6. Günlük akışı verilerinin içinde hatanın nedeni belirtilir.

Sorun giderme tamamlandığında stdout günlüğünü devre dışı bırakdığınızdan emin olun.

Başarısız istek izleme günlüklerini (FREB günlükleri) görüntülemek için:

  1. Azure portalında Sorunları tanılama ve çözme dikey penceresine gidin.
  2. Kenar çubuğunun DESTEK ARAÇLARI alanından Başarısız İstek İzleme Günlükleri'ni seçin.

Daha fazla bilgi için Azure Uygulaması Hizmetinde web uygulamaları için tanılama günlüğünü etkinleştirme konusunun Başarısız istek izlemeleri bölümüne ve Azure'da Web Uygulamaları için Uygulama performansı SSS: Nasıl yaparım? başarısız istek izlemeyi açma? bölümüne bakın.

Daha fazla bilgi için bkz. Azure Uygulaması Hizmeti'nde web uygulamaları için tanılama günlüğünü etkinleştirme.

Uyarı

stdout günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu veya oluşturulan günlük dosyalarının sayısıyla ilgili bir sınır yoktur.

ASP.NET Core uygulamasında rutin günlük kaydı için günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

IIS üzerinde sorun giderme

Uygulama Olay Günlüğü (IIS)

Uygulama Olay Günlüğü'ne erişin:

  1. Başlat menüsü açın, Olay Görüntüleyicisi arayın ve Olay Görüntüleyicisi uygulamasını seçin.
  2. Olay Görüntüleyicisi'da Windows Günlükleri düğümünü açın.
  3. Uygulama Olay Günlüğü'nü açmak için Uygulama'ya tıklayın.
  4. Başarısız uygulamayla ilişkili hataları arayın. Hatalar, Kaynak sütununda IIS AspNetCore Modülü veya IIS Express AspNetCore Modülü değerine sahiptir.

Uygulamayı komut isteminde çalıştırma

Birçok başlatma hatası, Uygulama Olay Günlüğü'nde yararlı bilgiler üretmez. Uygulamayı barındırma sisteminde bir komut isteminde çalıştırarak bazı hataların nedenini bulabilirsiniz.

Çerçeveye bağımlı dağıtım

Uygulama çerçeveye bağımlı bir dağıtımsa:

  1. Komut isteminde dağıtım klasörüne gidin ve uygulamanın derlemesini dotnet.exe ile yürüterek uygulamayı çalıştırın. Aşağıdaki komutta, assembly_name> için <uygulama derlemesinin adını kullanın: dotnet .\<assembly_name>.dll.
  2. Herhangi bir hatayı gösteren uygulamadan konsol çıkışı konsol penceresine yazılır.
  3. Uygulamaya istekte bulunurken hatalar oluşursa, dinlediği Kestrel ana bilgisayara ve bağlantı noktasına bir istekte bulunabilirsiniz. Varsayılan ana bilgisayar ve gönderiyi kullanarak adresine http://localhost:5000/bir istek gönderin. Uygulama uç nokta adresinde normal şekilde Kestrel yanıt veriyorsa, sorun büyük olasılıkla barındırma yapılandırmasıyla ilgilidir ve uygulama içinde daha az olasıdır.

Bağımsız dağıtım

Uygulama bağımsız bir dağıtımsa:

  1. Komut isteminde dağıtım klasörüne gidin ve uygulamanın yürütülebilir dosyasını çalıştırın. Aşağıdaki komutta, assembly_name> için <uygulama derlemesinin adını kullanın: <assembly_name>.exe.
  2. Herhangi bir hatayı gösteren uygulamadan konsol çıkışı konsol penceresine yazılır.
  3. Uygulamaya istekte bulunurken hatalar oluşursa, dinlediği Kestrel ana bilgisayara ve bağlantı noktasına bir istekte bulunabilirsiniz. Varsayılan ana bilgisayar ve gönderiyi kullanarak adresine http://localhost:5000/bir istek gönderin. Uygulama uç nokta adresinde normal şekilde Kestrel yanıt veriyorsa, sorun büyük olasılıkla barındırma yapılandırmasıyla ilgilidir ve uygulama içinde daha az olasıdır.

ASP.NET Core Module stdout günlüğü (IIS)

stdout günlüklerini etkinleştirmek ve görüntülemek için:

  1. Barındırma sistemindeki sitenin dağıtım klasörüne gidin.
  2. Günlükler klasörü yoksa klasörü oluşturun. MSBuild'in dağıtımda günlükler klasörünü otomatik olarak oluşturmasını etkinleştirme yönergeleri için Dizin yapısı konusuna bakın.
  3. web.config dosyasını düzenleyin. stdoutLogEnabled olarak ayarlayın ve stdoutLogFile yolunu logs klasörüne işaret edecek şekilde değiştirin (örneğin, .\logs\stdout).true stdout yolunda günlük dosyası adı ön eki bulunur. Günlük oluşturulduğunda zaman damgası, işlem kimliği ve dosya uzantısı otomatik olarak eklenir. Dosya stdout adı ön eki olarak kullanıldığında, tipik bir günlük dosyası stdout_20180205184032_5412.log olarak adlandırılır.
  4. Uygulama havuzunuzun kimliğinin günlükler klasörüne yazma izinlerine sahip olduğundan emin olun.
  5. Güncelleştirilmiş web.config dosyasını kaydedin.
  6. Uygulamaya bir istekte bulunın.
  7. Günlükler klasörüne gidin. En son stdout günlüğünü bulun ve açın.
  8. Hatalar için günlüğü inceleyin.

Sorun giderme tamamlandığında stdout günlüğünü devre dışı bırakın:

  1. web.config dosyasını düzenleyin.
  2. stdoutLogEnabled değerini olarak falseayarlayın.
  3. Dosyayı kaydedin.

Daha fazla bilgi için bkz. IIS için ASP.NET Core Modülü (ANCM).

Uyarı

stdout günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu veya oluşturulan günlük dosyalarının sayısıyla ilgili bir sınır yoktur.

ASP.NET Core uygulamasında rutin günlük kaydı için günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

ASP.NET Çekirdek Modülü hata ayıklama günlüğü (IIS)

ASP.NET Çekirdek Modülü hata ayıklama günlüğünü etkinleştirmek için uygulamanın web.config dosyasına aşağıdaki işleyici ayarlarını ekleyin:

<aspNetCore ...>
  <handlerSettings>
    <handlerSetting name="debugLevel" value="file" />
    <handlerSetting name="debugFile" value="c:\temp\ancm.log" />
  </handlerSettings>
</aspNetCore>

Günlük için belirtilen yolun mevcut olduğunu ve uygulama havuzunun kimliğinin konuma yazma izinlerine sahip olduğunu onaylayın.

Daha fazla bilgi için bkz . ASP.NET Çekirdek Modülü ile günlük oluşturma ve yeniden yönlendirme.

Geliştirici Özel Durum Sayfasını Etkinleştirme

Ortam ASPNETCORE_ENVIRONMENTdeğişkeni, uygulamayı Geliştirme ortamında çalıştırmak için web.config'e eklenebilir. Konak oluşturucusunda uygulama başlangıcında UseEnvironment ortam geçersiz kılınmadığı sürece ortam değişkeninin ayarlanması, uygulama çalıştırıldığında Geliştirici Özel Durum Sayfası'nın görüntülenmesine olanak tanır.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="InProcess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>

ortam değişkeninin ASPNETCORE_ENVIRONMENT ayarlanması yalnızca İnternet'e sunulmamış hazırlama ve test sunucularında kullanılması önerilir. Sorun giderme sonrasında web.config dosyasından ortam değişkenini kaldırın. web.config içinde ortam değişkenlerini ayarlama hakkında bilgi için bkz. aspNetCore'un environmentVariables alt öğesi.

Bir uygulamadan veri alma

Bir uygulama isteklere yanıt verebilen bir uygulamaysa, terminal satır içi ara yazılımını kullanarak uygulamadan istek, bağlantı ve ek veriler alın. Daha fazla bilgi ve örnek kod için bkz . Çekirdek projelerde sorun giderme ve hata ayıklama ASP.NET.

Yavaş veya asılı uygulama (IIS)

Kilitlenme bilgi dökümü, sistem belleğinin anlık görüntüsüdür ve uygulama kilitlenmesinin, başlatma hatasının veya yavaş uygulamanın nedenini belirlemeye yardımcı olabilir.

Uygulama kilitleniyor veya bir özel durumla karşılaşıyor

Windows Hata Bildirimi (WER) dökümünü alma ve analiz etme:

  1. kilitlenme dökümü dosyalarının konumunda c:\dumpstutulacağı bir klasör oluşturun. Uygulama havuzunun klasöre yazma erişimi olmalıdır.

  2. EnableDumps PowerShell betiğini çalıştırın:

    • Uygulama işlem içi barındırma modelini kullanıyorsa w3wp.exe için betiği çalıştırın:

      .\EnableDumps w3wp.exe c:\dumps
      
    • Uygulama işlem dışı barındırma modelini kullanıyorsa dotnet.exe için betiği çalıştırın:

      .\EnableDumps dotnet.exe c:\dumps
      
  3. Kilitlenmeye neden olan koşullar altında uygulamayı çalıştırın.

  4. Kilitlenme oluştuktan sonra DisableDumps PowerShell betiğini çalıştırın:

    • Uygulama işlem içi barındırma modelini kullanıyorsa w3wp.exe için betiği çalıştırın:

      .\DisableDumps w3wp.exe
      
    • Uygulama işlem dışı barındırma modelini kullanıyorsa dotnet.exe için betiği çalıştırın:

      .\DisableDumps dotnet.exe
      

Bir uygulama kilitlenip döküm toplama işlemi tamamlandıktan sonra uygulamanın normal şekilde sonlandırılmasına izin verilir. PowerShell betiği, WER'yi uygulama başına en fazla beş döküm toplayacak şekilde yapılandırır.

Uyarı

Kilitlenme bilgi dökümleri büyük miktarda disk alanı kaplayabilir (her biri birkaç gigabayta kadar).

Uygulama askıda kalıyor, başlatma sırasında başarısız oluyor veya normal şekilde çalışıyor

Uygulama yanıt vermemeye başladığında (yanıt vermeyi durdurduğunda ancak kilitlenmediğinde), başlatma sırasında başarısız olduğunda veya normal şekilde çalıştığında bkz . Kullanıcı Modu Döküm Dosyaları: Dökümü oluşturmak için uygun bir aracı seçmek için En İyi Aracı Seçme.

Dökümü analiz etme

Döküm, çeşitli yaklaşımlar kullanılarak analiz edilebilir. Daha fazla bilgi için bkz . Kullanıcı Modu Döküm Dosyasını Çözümleme.

Paket önbelleklerini temizleme

Çalışan bir uygulama, geliştirme makinesindeki .NET Core SDK'sını yükselttikten veya uygulama içindeki paket sürümlerini değiştirdikten hemen sonra başarısız olabilir. Bazı durumlarda, tutarsız paketler ana yükseltmeler yaparken bir uygulamayı bozabilir. Bu sorunların çoğu şu yönergeleri izleyerek düzeltilebilir:

  1. Bölme ve obj klasörlerini silin.

  2. dotnet nuget locals all --clear komutunu komut kabuğundan yürüterek paket önbelleklerini temizleyin .

    Paket önbelleklerini temizleme işlemi nuget.exe aracıyla ve komutu nuget locals all -clearyürütülerek de gerçekleştirilebilir. nuget.exe, Windows masaüstü işletim sistemiyle paketlenmiş bir yükleme değildir ve NuGet web sitesinden ayrı olarak alınmalıdır.

  3. Projeyi geri yükleyin ve yeniden oluşturun.

  4. Uygulamayı yeniden dağıtmadan önce sunucudaki dağıtım klasöründeki tüm dosyaları silin.

Ek kaynaklar

Azure belgeleri

Visual Studio belgeleri

Visual Studio Code belgeleri

Bu makalede, yaygın uygulama başlatma hataları hakkında bilgi ve bir uygulama Azure Uygulaması Hizmetine veya IIS'ye dağıtıldığında hataları tanılama yönergeleri sağlanır:

Uygulama başlatma hataları
Yaygın başlangıç HTTP durum kodu senaryolarını açıklar.

Azure Uygulaması Hizmetinde sorun giderme
Azure Uygulaması Hizmetine dağıtılan uygulamalar için sorun giderme önerileri sağlar.

IIS üzerinde sorun giderme
IIS'ye dağıtılan veya IIS Express'te yerel olarak çalıştırılan uygulamalar için sorun giderme önerileri sağlar. Bu kılavuz hem Windows Server hem de Windows masaüstü dağıtımları için geçerlidir.

Paket önbelleklerini temizleme
Tutarsız paketler büyük yükseltmeler gerçekleştirirken veya paket sürümlerini değiştirirken bir uygulamayı bozduğunda ne yapacağını açıklar.

Ek Kaynaklar
Ek sorun giderme konularını listeler.

Uygulama başlatma hataları

Visual Studio'da bir ASP.NET Core projesi hata ayıklama sırasında iis express barındırma olarak varsayılan olarak kullanılır. Yerel olarak hata ayıklama sırasında oluşan 502.5 İşlem Hatası, bu konudaki öneriler kullanılarak tanılanabilir.

403.14 Yasak

Uygulama başlatılamıyor. Aşağıdaki hata günlüğe kaydedilir:

The Web server is configured to not list the contents of this directory.

Hataya genellikle aşağıdaki senaryolardan herhangi birini içeren barındırma sistemindeki bozuk bir dağıtım neden olur:

  • Uygulama barındırma sistemindeki yanlış klasöre dağıtıldı.
  • Dağıtım işlemi, uygulamanın tüm dosya ve klasörlerini barındırma sistemindeki dağıtım klasörüne taşıyamadı.
  • Web.config dosyası dağıtımda eksik veya web.config dosyası içeriği yanlış biçimlendirilmiş.

Aşağıdaki adımları gerçekleştirin:

  1. Barındırma sistemindeki dağıtım klasöründeki tüm dosya ve klasörleri silin.
  2. Visual Studio, PowerShell veya el ile dağıtım gibi normal dağıtım yönteminizi kullanarak uygulamanın yayımlama klasörünün içeriğini barındırma sistemine yeniden dağıtın:
    • Web.config dosyasının dağıtımda mevcut olduğunu ve içeriğinin doğru olduğunu onaylayın.
    • Azure Uygulaması Hizmetinde barındırırken, uygulamanın klasöre D:\home\site\wwwroot dağıtıldığını onaylayın.
    • Uygulama IIS tarafından barındırıldığında, uygulamanın IIS Yöneticisi'nin Temel Ayarlar gösterilen IIS Fiziksel yoluna dağıtıldığını onaylayın.
  3. Barındırma sistemindeki dağıtımı projenin yayımlama klasörünün içeriğiyle karşılaştırarak uygulamanın tüm dosya ve klasörlerinin dağıtıldığını onaylayın.

Yayımlanan ASP.NET Core uygulamasının düzeni hakkında daha fazla bilgi için bkz . ASP.NET Core dizin yapısı. web.config dosyası hakkında daha fazla bilgi için bkz. IIS için ASP.NET Çekirdek Modülü (ANCM).

500 İç Sunucu Hatası

Uygulama başlatılır, ancak bir hata sunucunun isteği karşılamasını engeller.

Bu hata, başlatma sırasında veya yanıt oluşturulurken uygulamanın kodunda oluşur. Yanıt içerik içermeyebilir veya yanıt tarayıcıda 500 İç Sunucu Hatası olarak görünebilir. Uygulama Olay Günlüğü genellikle uygulamanın normal şekilde başlatıldığını belirtir. Sunucunun perspektifinden bakıldığında bu doğrudur. Uygulama başladı, ancak geçerli bir yanıt oluşturamıyor. Uygulamayı sunucuda bir komut isteminde çalıştırın veya sorunu gidermek için ASP.NET Core Module stdout günlüğünü etkinleştirin.

Bu hata, .NET Core Barındırma Paketi yüklenmediğinde veya bozuk olduğunda da oluşabilir. .NET Core Barındırma Paketinin (IIS için) veya Visual Studio'nun (IIS Express için) yüklenmesi veya onarılması sorunu çözebilir.

502.5 İşlem Hatası

Çalışan işlemi başarısız oluyor. Uygulama başlatılmıyor.

ASP.NET Çekirdek Modülü çalışan işlemini başlatmayı dener ancak başlatılamaz. İşlem başlatma hatasının nedeni genellikle Uygulama Olay Günlüğü ve ASP.NET Çekirdek Modülü stdout günlüğündeki girdilerden belirlenebilir.

Yaygın bir hata koşulu, ASP.NET Core paylaşılan çerçevesinin mevcut olmayan bir sürümünü hedefleme nedeniyle uygulamanın yanlış yapılandırılmasıdır. Hedef makinede ASP.NET Core paylaşılan çerçevesinin hangi sürümlerinin yüklü olduğunu denetleyin. Paylaşılan çerçeve, makinede yüklü olan ve gibi Microsoft.AspNetCore.Appbir meta paket tarafından başvurulan derleme kümesidir (.dll dosyaları). Meta paket başvurusu gereken en düşük sürümü belirtebilir. Daha fazla bilgi için bkz . Paylaşılan çerçeve.

Bir barındırma veya uygulama yanlış yapılandırması çalışan işleminin başarısız olmasına neden olduğunda 502.5 İşlem Hatası hata sayfası döndürülür:

Uygulama başlatılamadı (ErrorCode '0x800700c1')

EventID: 1010
Source: IIS AspNetCore Module V2
Failed to start application '/LM/W3SVC/6/ROOT/', ErrorCode '0x800700c1'.

Uygulamanın derlemesi (.dll) yüklenemediğinden uygulama başlatılamadı.

Bu hata, yayımlanan uygulama ile w3wp/iisexpress işlemi arasında bir bitlik uyumsuzluğu olduğunda oluşur.

Uygulama havuzunun 32 bit ayarının doğru olduğunu onaylayın:

  1. IIS Yöneticisi'nin Uygulama Havuzları'nda uygulama havuzunu seçin.
  2. Eylemler panelindeki Uygulama Havuzunu Düzenle'nin altında Gelişmiş Ayarlar'i seçin.
  3. 32 Bit Uygulamaları Etkinleştir'i ayarlayın:
    • 32 bit (x86) bir uygulama dağıtıyorsanız, değerini olarak Trueayarlayın.
    • 64 bit (x64) bir uygulama dağıtıyorsanız, değerini olarak Falseayarlayın.

Proje dosyasındaki bir <Platform> MSBuild özelliği ile uygulamanın yayımlanan bitliği arasında çakışma olmadığını onaylayın.

Bağlan sıfırlama

Üst bilgiler gönderildikten sonra bir hata oluşursa, hata oluştuğunda sunucunun 500 İç Sunucu Hatası göndermesi çok geç olur. Bu durum genellikle bir yanıt için karmaşık nesnelerin seri hale getirilmesi sırasında bir hata oluştuğunda oluşur. Bu tür bir hata, istemcide bağlantı sıfırlama hatası olarak görünür. Uygulama günlüğü bu tür hataları gidermeye yardımcı olabilir.

Varsayılan başlangıç sınırları

ASP.NET Çekirdek Modülü, varsayılan startupTimeLimit değeri 120 saniye ile yapılandırılır. Varsayılan değerde bırakıldığında, modülün işlem hatasını günlüğe kaydedebilmesi için uygulamanın başlatılması iki dakika kadar sürebilir. Modülü yapılandırma hakkında bilgi için bkz . aspNetCore öğesinin öznitelikleri.

Azure Uygulaması Hizmetinde sorun giderme

Önemli

Azure Uygulaması Hizmeti ile ASP.NET Core önizleme sürümleri

ASP.NET Core önizleme sürümleri varsayılan olarak Azure Uygulaması Hizmetine dağıtılmaz. ASP.NET Core önizleme sürümünü kullanan bir uygulamayı barındırmak için bkz. Azure Uygulaması Hizmetine ASP.NET Core önizleme sürümünü dağıtma.

Uygulama Olay Günlüğü (Azure Uygulaması Hizmeti)

Uygulama Olay Günlüğü'ne erişmek için Azure portalındaki Sorunları tanılama ve çözme dikey penceresini kullanın:

  1. Azure portalında uygulamayı App Services'te açın.
  2. Sorunları tanılama ve çözme'yi seçin.
  3. Tanılama Araçları başlığını seçin.
  4. Destek Araçları'nın altında Uygulama Olayları düğmesini seçin.
  5. Kaynak sütununda IIS AspNetCoreModule veya IIS AspNetCoreModule V2 girdisi tarafından sağlanan en son hatayı inceleyin.

Sorunları tanılama ve çözme dikey penceresini kullanmanın bir alternatifi, Uygulama Olay Günlüğü dosyasını kudu kullanarak doğrudan incelemektir:

  1. Geliştirme Araçları alanında Gelişmiş Araçlar'agidin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
  3. LogFiles klasörünü açın.
  4. Dosyanın yanındaki eventlog.xml kalem simgesini seçin.
  5. Günlüğü inceleyin. En son olayları görmek için günlüğün en altına kaydırın.

Uygulamayı Kudu konsolunda çalıştırma

Birçok başlatma hatası, Uygulama Olay Günlüğü'nde yararlı bilgiler üretmez. Hatayı bulmak için uygulamayı Kudu Uzaktan Yürütme Konsolu'nda çalıştırabilirsiniz:

  1. Geliştirme Araçları alanında Gelişmiş Araçlar'agidin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.

32 bit (x86) bir uygulamayı test edin

Geçerli sürüm

  1. cd d:\home\site\wwwroot
  2. Uygulamayı çalıştırın:
    • Uygulama çerçeveye bağımlı bir dağıtımsa:

      dotnet .\{ASSEMBLY NAME}.dll
      
    • Uygulama bağımsız bir dağıtımsa:

      {ASSEMBLY NAME}.exe
      

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

Önizleme sürümünde çalışan çerçeveye bağımlı dağıtım

ASP.NET Core {VERSION} (x86) Çalışma Zamanı site uzantısının yüklenmesini gerektirir.

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x32 ({X.Y} çalışma zamanı sürümüdür)
  2. Uygulamayı çalıştırın: dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

64 bit (x64) uygulamasını test edin

Geçerli sürüm

  • Uygulama 64 bit (x64) çerçeveye bağımlı bir dağıtımsa:
    1. cd D:\Program Files\dotnet
    2. Uygulamayı çalıştırın: dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll
  • Uygulama bağımsız bir dağıtımsa:
    1. cd D:\home\site\wwwroot
    2. Uygulamayı çalıştırın: {ASSEMBLY NAME}.exe

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

Önizleme sürümünde çalışan çerçeveye bağımlı dağıtım

ASP.NET Core {VERSION} (x64) Çalışma Zamanı site uzantısının yüklenmesini gerektirir.

  1. cd D:\home\SiteExtensions\AspNetCoreRuntime.{X.Y}.x64 ({X.Y} çalışma zamanı sürümüdür)
  2. Uygulamayı çalıştırın: dotnet \home\site\wwwroot\{ASSEMBLY NAME}.dll

Uygulamadan gelen ve hataları gösteren konsol çıkışı Kudu konsoluna aktarılır.

ASP.NET Core Module stdout günlüğü (Azure Uygulaması Hizmeti)

ASP.NET Core Module stdout günlüğü genellikle Uygulama Olay Günlüğü'nde bulunmayan yararlı hata iletilerini kaydeder. stdout günlüklerini etkinleştirmek ve görüntülemek için:

  1. Azure portalında Sorunları tanılama ve çözme dikey penceresine gidin.
  2. SORUN KATEGORİSİ SEÇ altında Web Uygulaması Aşağı düğmesini seçin.
  3. Önerilen Çözümler>Stdout Günlüğü Yeniden Yönlendirmesini Etkinleştir'in altında, Web.Config'i düzenlemek için Kudu Konsolunu Aç düğmesini seçin.
  4. Kudu Tanılama Konsolu'nda wwwroot yol sitesinin>klasörlerini açın. Listenin en altındaki web.config dosyasını görüntülemek için ekranı aşağı kaydırın.
  5. Web.config dosyasının yanındaki kalem simgesine tıklayın.
  6. stdoutLogEnabled değerini olarak ayarlayın ve stdoutLogFile yolunu olarak değiştirin: \\?\%home%\LogFiles\stdout.true
  7. Güncelleştirilmiş web.config dosyasını kaydetmek için Kaydet'i seçin.
  8. Uygulamaya bir istekte bulunın.
  9. Azure portalına dönün. GELİşTİrME ARAÇLARI alanında Gelişmiş Araçlar dikey penceresini seçin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  10. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
  11. LogFiles klasörünü seçin.
  12. Değiştirilmiş sütununu inceleyin ve en son değişiklik tarihiyle stdout günlüğünü düzenlemek için kalem simgesini seçin.
  13. Günlük dosyası açıldığında hata görüntülenir.

Sorun giderme tamamlandığında stdout günlüğünü devre dışı bırakın:

  1. Kudu Tanılama Konsolu'nda wwwroot yol sitesine>dönerek web.config dosyasını açın. Kalem simgesini seçerek web.config dosyasını yeniden açın.
  2. stdoutLogEnabled değerini olarak falseayarlayın.
  3. Dosyayı kaydetmek için Kaydet'i seçin.

Daha fazla bilgi için bkz. IIS için ASP.NET Core Modülü (ANCM).

Uyarı

stdout günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu veya oluşturulan günlük dosyalarının sayısıyla ilgili bir sınır yoktur. Uygulama başlatma sorunlarını gidermek için yalnızca stdout günlüğünü kullanın.

ASP.NET Core uygulamasında başlangıçtan sonra genel günlük kaydı için, günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

Yavaş veya asılı uygulama (Azure Uygulaması Hizmeti)

Bir uygulama yavaş yanıtladığında veya istekte yanıt vermediğinde aşağıdaki makalelere bakın:

İzleme dikey pencereleri

İzleme dikey pencereleri, konunun önceki bölümlerinde açıklanan yöntemlere alternatif bir sorun giderme deneyimi sağlar. Bu dikey değişkenler 500 serisi hataları tanılamak için kullanılabilir.

ASP.NET Çekirdek Uzantıları'nın yüklendiğini onaylayın. Uzantılar yüklü değilse el ile yükleyin:

  1. GELİrME ARAÇLARI dikey penceresinde Uzantılar dikey penceresini seçin.
  2. ASP.NET Çekirdek Uzantıları listede görünmelidir.
  3. Uzantılar yüklü değilse Ekle düğmesini seçin.
  4. Listeden ASP.NET Çekirdek Uzantıları'nı seçin.
  5. Yasal koşulları kabul etmek için Tamam’ı seçin.
  6. Uzantı ekle dikey penceresinde Tamam'ı seçin.
  7. Uzantıların ne zaman başarıyla yüklendiğini gösteren bilgi amaçlı bir açılır ileti.

stdout günlüğü etkinleştirilmediyse şu adımları izleyin:

  1. Azure portalında, GELİşTİrME ARAÇLARI alanında Gelişmiş Araçlar dikey penceresini seçin. Git→ düğmesini seçin. Kudu konsolu yeni bir tarayıcı sekmesinde veya penceresinde açılır.
  2. Sayfanın üst kısmındaki gezinti çubuğunu kullanarak Hata ayıklama konsolunu açın ve CMD'yi seçin.
  3. Klasörleri wwwroot yol sitesine>açın ve listenin en altındaki web.config dosyasını görüntülemek için aşağı kaydırın.
  4. Web.config dosyasının yanındaki kalem simgesine tıklayın.
  5. stdoutLogEnabled değerini olarak ayarlayın ve stdoutLogFile yolunu olarak değiştirin: \\?\%home%\LogFiles\stdout.true
  6. Güncelleştirilmiş web.config dosyasını kaydetmek için Kaydet'i seçin.

Tanılama günlüğünü etkinleştirmeye devam edin:

  1. Azure portalında Tanılama günlükleri dikey penceresini seçin.
  2. Uygulama Günlüğü (Dosya Sistemi) ve Ayrıntılı hata iletileri için Açık anahtarını seçin. Dikey penceresinin üst kısmındaki Kaydet düğmesini seçin.
  3. Başarısız İstek Olayı Arabelleğe Alma (FREB) günlüğü olarak da bilinen başarısız istek izlemeyi eklemek için Başarısız istek izleme için Açık anahtarını seçin.
  4. Portaldaki Tanılama günlükleri dikey penceresinin hemen altında listelenen Günlük akışı dikey penceresini seçin.
  5. Uygulamaya bir istekte bulunın.
  6. Günlük akışı verilerinin içinde hatanın nedeni belirtilir.

Sorun giderme tamamlandığında stdout günlüğünü devre dışı bırakdığınızdan emin olun.

Başarısız istek izleme günlüklerini (FREB günlükleri) görüntülemek için:

  1. Azure portalında Sorunları tanılama ve çözme dikey penceresine gidin.
  2. Kenar çubuğunun DESTEK ARAÇLARI alanından Başarısız İstek İzleme Günlükleri'ni seçin.

Daha fazla bilgi için Azure Uygulaması Hizmetinde web uygulamaları için tanılama günlüğünü etkinleştirme konusunun Başarısız istek izlemeleri bölümüne ve Azure'da Web Uygulamaları için Uygulama performansı SSS: Nasıl yaparım? başarısız istek izlemeyi açma? bölümüne bakın.

Daha fazla bilgi için bkz. Azure Uygulaması Hizmeti'nde web uygulamaları için tanılama günlüğünü etkinleştirme.

Uyarı

stdout günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu veya oluşturulan günlük dosyalarının sayısıyla ilgili bir sınır yoktur.

ASP.NET Core uygulamasında rutin günlük kaydı için günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

IIS üzerinde sorun giderme

Uygulama Olay Günlüğü (IIS)

Uygulama Olay Günlüğü'ne erişin:

  1. Başlat menüsü açın, Olay Görüntüleyicisi arayın ve Olay Görüntüleyicisi uygulamasını seçin.
  2. Olay Görüntüleyicisi'da Windows Günlükleri düğümünü açın.
  3. Uygulama Olay Günlüğü'nü açmak için Uygulama'ya tıklayın.
  4. Başarısız uygulamayla ilişkili hataları arayın. Hatalar, Kaynak sütununda IIS AspNetCore Modülü veya IIS Express AspNetCore Modülü değerine sahiptir.

Uygulamayı komut isteminde çalıştırma

Birçok başlatma hatası, Uygulama Olay Günlüğü'nde yararlı bilgiler üretmez. Uygulamayı barındırma sisteminde bir komut isteminde çalıştırarak bazı hataların nedenini bulabilirsiniz.

Çerçeveye bağımlı dağıtım

Uygulama çerçeveye bağımlı bir dağıtımsa:

  1. Komut isteminde dağıtım klasörüne gidin ve uygulamanın derlemesini dotnet.exe ile yürüterek uygulamayı çalıştırın. Aşağıdaki komutta, assembly_name> için <uygulama derlemesinin adını kullanın: dotnet .\<assembly_name>.dll.
  2. Herhangi bir hatayı gösteren uygulamadan konsol çıkışı konsol penceresine yazılır.
  3. Uygulamaya istekte bulunurken hatalar oluşursa, dinlediği Kestrel ana bilgisayara ve bağlantı noktasına bir istekte bulunabilirsiniz. Varsayılan ana bilgisayar ve gönderiyi kullanarak adresine http://localhost:5000/bir istek gönderin. Uygulama uç nokta adresinde normal şekilde Kestrel yanıt veriyorsa, sorun büyük olasılıkla barındırma yapılandırmasıyla ilgilidir ve uygulama içinde daha az olasıdır.

Bağımsız dağıtım

Uygulama bağımsız bir dağıtımsa:

  1. Komut isteminde dağıtım klasörüne gidin ve uygulamanın yürütülebilir dosyasını çalıştırın. Aşağıdaki komutta, assembly_name> için <uygulama derlemesinin adını kullanın: <assembly_name>.exe.
  2. Herhangi bir hatayı gösteren uygulamadan konsol çıkışı konsol penceresine yazılır.
  3. Uygulamaya istekte bulunurken hatalar oluşursa, dinlediği Kestrel ana bilgisayara ve bağlantı noktasına bir istekte bulunabilirsiniz. Varsayılan ana bilgisayar ve gönderiyi kullanarak adresine http://localhost:5000/bir istek gönderin. Uygulama uç nokta adresinde normal şekilde Kestrel yanıt veriyorsa, sorun büyük olasılıkla barındırma yapılandırmasıyla ilgilidir ve uygulama içinde daha az olasıdır.

ASP.NET Core Module stdout günlüğü (IIS)

stdout günlüklerini etkinleştirmek ve görüntülemek için:

  1. Barındırma sistemindeki sitenin dağıtım klasörüne gidin.
  2. Günlükler klasörü yoksa klasörü oluşturun. MSBuild'in dağıtımda günlükler klasörünü otomatik olarak oluşturmasını etkinleştirme yönergeleri için Dizin yapısı konusuna bakın.
  3. web.config dosyasını düzenleyin. stdoutLogEnabled olarak ayarlayın ve stdoutLogFile yolunu logs klasörüne işaret edecek şekilde değiştirin (örneğin, .\logs\stdout).true stdout yolunda günlük dosyası adı ön eki bulunur. Günlük oluşturulduğunda zaman damgası, işlem kimliği ve dosya uzantısı otomatik olarak eklenir. Dosya stdout adı ön eki olarak kullanıldığında, tipik bir günlük dosyası stdout_20180205184032_5412.log olarak adlandırılır.
  4. Uygulama havuzunuzun kimliğinin günlükler klasörüne yazma izinlerine sahip olduğundan emin olun.
  5. Güncelleştirilmiş web.config dosyasını kaydedin.
  6. Uygulamaya bir istekte bulunın.
  7. Günlükler klasörüne gidin. En son stdout günlüğünü bulun ve açın.
  8. Hatalar için günlüğü inceleyin.

Sorun giderme tamamlandığında stdout günlüğünü devre dışı bırakın:

  1. web.config dosyasını düzenleyin.
  2. stdoutLogEnabled değerini olarak falseayarlayın.
  3. Dosyayı kaydedin.

Daha fazla bilgi için bkz. IIS için ASP.NET Core Modülü (ANCM).

Uyarı

stdout günlüğünün devre dışı bırakılmaması uygulama veya sunucu hatasına neden olabilir. Günlük dosyası boyutu veya oluşturulan günlük dosyalarının sayısıyla ilgili bir sınır yoktur.

ASP.NET Core uygulamasında rutin günlük kaydı için günlük dosyası boyutunu sınırlayan ve günlükleri döndüren bir günlük kitaplığı kullanın. Daha fazla bilgi için bkz . üçüncü taraf günlük sağlayıcıları.

Geliştirici Özel Durum Sayfasını Etkinleştirme

Ortam ASPNETCORE_ENVIRONMENTdeğişkeni, uygulamayı Geliştirme ortamında çalıştırmak için web.config'e eklenebilir. Konak oluşturucusunda uygulama başlangıcında UseEnvironment ortam geçersiz kılınmadığı sürece ortam değişkeninin ayarlanması, uygulama çalıştırıldığında Geliştirici Özel Durum Sayfası'nın görüntülenmesine olanak tanır.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
  </environmentVariables>
</aspNetCore>

ortam değişkeninin ASPNETCORE_ENVIRONMENT ayarlanması yalnızca İnternet'e sunulmamış hazırlama ve test sunucularında kullanılması önerilir. Sorun giderme sonrasında web.config dosyasından ortam değişkenini kaldırın. web.config içinde ortam değişkenlerini ayarlama hakkında bilgi için bkz. aspNetCore'un environmentVariables alt öğesi.

Bir uygulamadan veri alma

Bir uygulama isteklere yanıt verebilen bir uygulamaysa, terminal satır içi ara yazılımını kullanarak uygulamadan istek, bağlantı ve ek veriler alın. Daha fazla bilgi ve örnek kod için bkz . Çekirdek projelerde sorun giderme ve hata ayıklama ASP.NET.

Yavaş veya asılı uygulama (IIS)

Kilitlenme bilgi dökümü, sistem belleğinin anlık görüntüsüdür ve uygulama kilitlenmesinin, başlatma hatasının veya yavaş uygulamanın nedenini belirlemeye yardımcı olabilir.

Uygulama kilitleniyor veya bir özel durumla karşılaşıyor

Windows Hata Bildirimi (WER) dökümünü alma ve analiz etme:

  1. kilitlenme dökümü dosyalarının konumunda c:\dumpstutulacağı bir klasör oluşturun. Uygulama havuzunun klasöre yazma erişimi olmalıdır.

  2. EnableDumps PowerShell betiğini çalıştırın:

    • Uygulama işlem içi barındırma modelini kullanıyorsa w3wp.exe için betiği çalıştırın:

      .\EnableDumps w3wp.exe c:\dumps
      
    • Uygulama işlem dışı barındırma modelini kullanıyorsa dotnet.exe için betiği çalıştırın:

      .\EnableDumps dotnet.exe c:\dumps
      
  3. Kilitlenmeye neden olan koşullar altında uygulamayı çalıştırın.

  4. Kilitlenme oluştuktan sonra DisableDumps PowerShell betiğini çalıştırın:

    • Uygulama işlem içi barındırma modelini kullanıyorsa w3wp.exe için betiği çalıştırın:

      .\DisableDumps w3wp.exe
      
    • Uygulama işlem dışı barındırma modelini kullanıyorsa dotnet.exe için betiği çalıştırın:

      .\DisableDumps dotnet.exe
      

Bir uygulama kilitlenip döküm toplama işlemi tamamlandıktan sonra uygulamanın normal şekilde sonlandırılmasına izin verilir. PowerShell betiği, WER'yi uygulama başına en fazla beş döküm toplayacak şekilde yapılandırır.

Uyarı

Kilitlenme bilgi dökümleri büyük miktarda disk alanı kaplayabilir (her biri birkaç gigabayta kadar).

Uygulama askıda kalıyor, başlatma sırasında başarısız oluyor veya normal şekilde çalışıyor

Uygulama yanıt vermemeye başladığında (yanıt vermeyi durdurduğunda ancak kilitlenmediğinde), başlatma sırasında başarısız olduğunda veya normal şekilde çalıştığında bkz . Kullanıcı Modu Döküm Dosyaları: Dökümü oluşturmak için uygun bir aracı seçmek için En İyi Aracı Seçme.

Dökümü analiz etme

Döküm, çeşitli yaklaşımlar kullanılarak analiz edilebilir. Daha fazla bilgi için bkz . Kullanıcı Modu Döküm Dosyasını Çözümleme.

Paket önbelleklerini temizleme

Çalışan bir uygulama, geliştirme makinesindeki .NET Core SDK'sını yükselttikten veya uygulama içindeki paket sürümlerini değiştirdikten hemen sonra başarısız olabilir. Bazı durumlarda, tutarsız paketler ana yükseltmeler yaparken bir uygulamayı bozabilir. Bu sorunların çoğu şu yönergeleri izleyerek düzeltilebilir:

  1. Bölme ve obj klasörlerini silin.

  2. dotnet nuget locals all --clear komutunu komut kabuğundan yürüterek paket önbelleklerini temizleyin .

    Paket önbelleklerini temizleme işlemi nuget.exe aracıyla ve komutu nuget locals all -clearyürütülerek de gerçekleştirilebilir. nuget.exe, Windows masaüstü işletim sistemiyle paketlenmiş bir yükleme değildir ve NuGet web sitesinden ayrı olarak alınmalıdır.

  3. Projeyi geri yükleyin ve yeniden oluşturun.

  4. Uygulamayı yeniden dağıtmadan önce sunucudaki dağıtım klasöründeki tüm dosyaları silin.

Ek kaynaklar

Azure belgeleri

Visual Studio belgeleri

Visual Studio Code belgeleri