IIS Hata Günlükleri ve ASP.Net Başarısız İsteklerini Bulmanın Diğer Yolları
ASP.NET Core uygulamanıza yeni özellikler yazmak ne kadar heyecan verici olsa da kullanıcılarımız kaçınılmaz olarak başarısız isteklerle karşılaşır. Sunucularınızdaki IIS veya ASP.NET hatalarını nasıl gidereceğinizi biliyor musunuz? Masanıza vurup rahatsızlığınızı dile getirmek cazip gelebilir.
Ancak Windows ve ASP.NET Core, başarısız isteklerin günlüğe kaydedildiği birkaç farklı günlük sağlar. Bu, basit IIS günlüklerinin ötesine geçer ve başarısız isteklerle mücadele etmek için ihtiyacınız olan bilgileri size verebilir.
4 Farklı IIS Günlüğünü Tanıyın
Bir süredir ASP.NET Core uygulamalarıyla uğraşıyorsanız normal IIS loglarına aşina olabilirsiniz. Bu tür günlükler sorun giderme araç kutunuzun yalnızca başlangıcıdır.
Daha ayrıntılı hata mesajları arıyorsanız veya IIS günlük dosyanızda hiçbir şey bulamıyorsanız bakabileceğiniz başka yerler de vardır.
1. Standart IIS Günlükleri
Standart IIS günlükleri, IIS siteniz üzerinden akan her bir web isteğini içerecektir.
IIS Yöneticisi aracılığıyla bir “Günlüğe Kaydetme” özelliğini görebilirsiniz. Buna tıkladığınızda IIS günlüklerinizin etkinleştirildiğini doğrulayabilir ve nereye yazıldıklarını gözlemleyebilirsiniz.
Günlüklerinizi W3SVC site kimlik numaralarınızla adlandırılan klasörlerde bulmalısınız.
Günlüklerinizi bulma konusunda yardıma mı ihtiyacınız var? Şuna göz atın: IIS Günlük Dosyaları Nerede Bulunur?
Varsayılan olarak, IIS günlüğünüzde günlüğe kaydedilen her istek, URL, sorgu dizesi ve durum, alt durum ve win32 durumu aracılığıyla hata kodları dahil olmak üzere çeşitli anahtar alanları içerecektir.
Bu durum kodları asıl hatanın daha ayrıntılı olarak tanımlanmasına yardımcı olabilir.
#Fields: tarih saat s-ip cs-yöntemi cs-uri-stem cs-uri-query s-port cs-kullanıcı adı c-ip cs(Kullanıcı Aracısı) cs(Yönlendiren) sc-status sc-substatus sc-win32- durum zaman aldı 2024-06-09 21:45:10 ::1 GET /webapp2 - 80 - ::1 Mozilla/5.0 - 500 0 0 5502 2024-06-09 21:45:10 ::1 GET /favicon.ico - 80 - ::1 Mozilla/5.0 http://localhost/webapp2 404 0 2 4
“Sc-status” ve “sc-substatus” alanları, Tamam için 200, hatalar için 404, 500 vb. standart HTTP durum kodudur.
“sc-win32-status”, kodu aramadığınız sürece bilemeyeceğiniz daha fazla ayrıntı sağlayabilir. Bunlar temel Win32 hata kodlarıdır .
Ayrıca günlük mesajının ait olduğu uç noktayı “cs-uri-stem” altında görebilirsiniz. Örneğin, “/webapp2.” Bu sizi anında uygulamanızdaki sorunlu noktalara yönlendirebilir.
Bakılması gereken bir diğer önemli bilgi de “zaman almış” bilgisidir. Bu size isteğin ve yanıtının milisaniye cinsinden gidiş dönüş süresini verir.
Bu arada, Retrace kullanıyorsanız, yerleşik günlük yönetimi işlevinin bir parçası olarak bunu tüm IIS günlüklerinizde sorgulama yapmak için de kullanabilirsiniz.
2. İsteğinizi IIS Günlüğünde Bulamıyor musunuz? HTTPERR, IIS Hata Günlüğünüzdür.
Her bir web isteği IIS günlüğünüzde gösterilmelidir. Aksi takdirde, isteğin IIS’ye hiç ulaşmamış olması veya IIS’nin çalışmıyor olması mümkündür.
IIS Loggin’in devre dışı bırakılması da mümkündür. IIS çalışıyorsa ancak günlük olaylarını hâlâ göremiyorsanız, HTTPERR’ye gidiyor olabilir.
Sunucunuza gelen istekler, IIS’ye teslim edilmeden önce ilk olarak HTTP.SYS üzerinden yönlendirilir. Bu tür hatalar HTTPERR’ye kaydedilir.
Yaygın hatalar 400 Hatalı İstek, zaman aşımları, 503 Hizmet Kullanılamıyor ve benzer türdeki sorunlardır. HTTP.SYS’deki yerleşik hata mesajları ve hata kodları genellikle çok ayrıntılıdır.
HTTPERR hata günlükleri nerede?
C:\Windows\System32\LogFiles\HTTPERR
3. Windows Olay Görüntüleyicisinde ASP.NET Çekirdek İstisnalarını arayın
Varsayılan olarak, ASP.NET Core işlenmeyen 500 düzeydeki özel durumları Windows Uygulaması EventLog’a kaydeder. Bu , ASP.NET Çekirdek Sağlığı İzleme özelliği tarafından gerçekleştirilir . Bunun ayarlarını appsettings.json dosyanızdaki system.web/healthMonitoring aracılığıyla kontrol edebilirsiniz.
Çok az kişi Uygulama EventLog’una yazılan hata sayısının sınırlı olduğunun farkındadır. Yani hatanızı bulamayabilirsiniz!
Varsayılan olarak, aynı türde hatayı yalnızca dakikada bir günlüğe kaydeder. Ayrıca herhangi bir hatanın Uygulama EventLog’a yazılmasını da devre dışı bırakabilirsiniz.
İstisnanızı bulamıyor musunuz?
İstisnanızı EventLog’da bulamayabilirsiniz. WebForms, MVC, Core, WCF veya diğer çerçeveleri kullanmanıza bağlı olarak, durum izleme özelliğiyle uyumluluk sorunları nedeniyle ASP.NET Core’un ASP.NET’e hiçbir hata yazmaması konusunda sorunlar yaşayabilirsiniz.
Bu arada, eğer sunucunuza Retrace’i kurarsanız, kodunuza atılan her istisnayı yakalayabilir. IIS özelliklerini nasıl kullanacağını biliyor.
4. Gelişmiş IIS Hata Günlükleri için Başarısız İstek İzleme
Başarısız istek izleme (FRT), muhtemelen IIS’de en az kullanılan özelliklerden biridir. Ancak inanılmaz derecede güçlüdür.
Sağlam IIS günlüğü sağlar ve harika bir IIS hata günlüğü olarak çalışır. FRT, IIS Yöneticisi’nde etkinleştirilir ve tüm istekler, yavaş istekler veya yalnızca belirli yanıt durumu kodları için kurallar aracılığıyla yapılandırılabilir.
Bunu bir web sitesinin “İşlemler” bölümü aracılığıyla yapılandırabilirsiniz:
FRT’nin tek sorunu inanılmaz derecede ayrıntılı olmasıdır. Onu başvurunuzun stenografı olarak düşünün. IIS işlem hattının her ayrıntısını ve her adımını izler. Tek bir isteği çözmeye çalışırken çok zaman harcayabilirsiniz.
5. ASP.NET Core’un Tam İstisnayı Göstermesini Sağlayın…Geçici Olarak
Diğer yollar başarısız olursa ve sorunu yeniden oluşturabiliyorsanız, istisnaları görmek için ASP.NET Core appsettings.json dosyanızı değiştirebilirsiniz.
Tipik olarak, önemli güvenlik nedenlerinden dolayı sunucu tarafı istisnalarının uygulamanızda görünmesi devre dışı bırakılır. Bunun yerine sarı bir ölüm ekranı (YSOD) veya kendi özel hata sayfanızı göreceksiniz.
İstisnaları görünür kılmak için uygulama yapılandırma dosyalarınızı değiştirebilirsiniz.
ASP.NET
Sunucuya erişmek için uzak masaüstünü kullanabilir ve web.config dosyanızda CustomErrors’ı “RemoteOnly” olarak ayarlayabilirsiniz, böylece istisnanın tamamını sunucudaki “localhost” aracılığıyla görebilirsiniz. Bu, hiçbir kullanıcının istisnaların tamamını görmemesini sağlar ancak siz görebilirsiniz.
Kullanıcılarınızın artık tam bir istisna sayfası görebilmesi sizin için sorun değilse, CustomErrors’ı “Kapalı” olarak ayarlayabilirsiniz.
.NET Çekirdeği
ASP.NET’in önceki sürümleriyle karşılaştırıldığında .NET Core, hata işlemenin çalışma şeklini tamamen değiştirdi . Artık ara yazılımınızda DeveloperExceptionPage’i kullanmanız gerekiyor.
.NET Core, hatalarınızı nasıl görmek ve yönetmek istediğiniz konusunda size eşsiz bir esneklik sağlar. Ayrıca Retrace gibi enstrümantasyonda kablolamayı da kolaylaştırır .
6. ASP.NET Çekirdek İstisnalarını Bulmak için .NET Profiler Kullanma
Önek (ücretsizdir!) gibi .NET Profiler’ları, kodunuzda gizli olsalar bile, .NET’in kodunuza attığı her istisnayı toplayabilir.
Prefix, kodunuzu yazarken optimize etmenize yardımcı olmak için iş istasyonunuzda çalışacak şekilde tasarlanmış ücretsiz bir ASP.NET Core profil oluşturucusudur. Önek ayrıca size SQL sorgularınızı, HTTP çağrılarınızı ve çok daha fazlasını gösterebilir.
Uygulama Hatalarını Takip Etme Konusunda Proaktif Olun!
Üretimde bir hatayı yeniden oluşturmaya çalışmak veya IIS günlüklerini/IIS hata günlüklerini takip etmek eğlenceli değildir. Muhtemelen sizin farkında bile olmadığınız çok daha fazla hata oluyordur. Bir müşteri sizinle iletişime geçip sitenizin hatalar verdiğini söylediğinde, bunları görmenin kolay bir yolunu bulsanız iyi olur!
Uygulama hatalarını takip etmek her geliştirme ekibinin yapması gereken en önemli şeylerden biridir. Yardıma ihtiyacınız varsa tüm uygulamalarınız ve sunucularınız genelinde her istisnayı toplayabilen Retrace’i mutlaka deneyin.