
Yerel makinenizde sorunsuz çalışan bir .NET uygulaması, hosting hesabına yüklendiğinde beklenmedik hatalarla karşılaşabilir. Bunun nedeni genellikle kod değil, geliştirme ortamı ile barındırma ortamı arasındaki yapılandırma farklarıdır: farklı çalışma zamanı sürümü, farklı bağlantı dizesi, eksik dosya izni veya hata gösteriminin kapalı olması.
Bu rehber, bir .NET uygulamasını Windows hosting ortamına yayına alma sürecini ve en sık karşılaşılan hataların çözümünü anlatıyor.
Yayına Almadan Önce: Dört Kontrol
1. Çalışma Zamanı Sürümünü Doğrulayın
Hosting hesabınızda hangi .NET sürümlerinin desteklendiğini kontrol edin ve projenizin hedef sürümünü buna göre ayarlayın. Klasik .NET Framework ile modern .NET tamamen farklı çalışma zamanlarıdır; hosting paneliniz genellikle her ikisini de listeler ama uygulama havuzu ayarında doğru olanı seçmeniz gerekir.
2. Yayınlama Modunu Seçin
Modern .NET'te iki seçenek vardır:
- Framework'e bağımlı yayınlama: Daha küçük çıktı üretir ama sunucuda uyumlu çalışma zamanının kurulu olmasını gerektirir.
- Kendi kendine yeterli yayınlama: Çalışma zamanını da paketin içine gömer. Çıktı büyür ama sunucudaki sürümden bağımsız çalışır. Hosting sağlayıcınızın çalışma zamanı sürümünü kontrol edemediğiniz durumlarda bu seçenek sorunları baştan keser.
3. Bağlantı Dizesini Ayırın
Veritabanı bağlantı bilgisini kod içine gömmeyin. Yayınlama yapılandırmasında ortama göre değişen bir bağlantı dizesi tanımlayın. Yerel bağlantı dizesiyle sunucuya çıkmak, yayına alma sonrası ilk ve en yaygın hatadır.
4. Hata Gösterimini Geçici Olarak Açın
Yayına almanın ilk saatinde ayrıntılı hata mesajlarını görebilmeniz gerekir. Aksi halde karşınıza yalnızca genel bir sunucu hatası çıkar ve nedeni tahmin etmeye çalışırsınız. Sorunları çözdükten sonra mutlaka kapatın — ayrıntılı hata mesajları sunucu yolları ve yapılandırma bilgisi sızdırır.
Yayına Alma Adımları
- Yayınlama çıktısı üretin: Projeyi sürüm (release) yapılandırmasında yayınlayın. Hata ayıklama yapılandırması hem yavaş çalışır hem gereksiz dosya taşır.
- Dosyaları yükleyin: Yayınlama çıktısındaki tüm dosyaları hesabınızın web köküne aktarın. Yayınlama klasörünün içeriğini yükleyin, klasörün kendisini değil — bu karışıklık "sayfa bulunamadı" hatasının yaygın nedenidir.
- Uygulama havuzunu yapılandırın: Panelden uygulama havuzunu doğru .NET sürümüne ayarlayın. Modern .NET için havuzun "yönetilen kod yok" moduna alınması gerekir; bu ayrıntı sık atlanır ve doğrudan başlatma hatasına yol açar.
- Veritabanını oluşturun ve aktarın: Hosting panelinden veritabanını oluşturun, kullanıcı tanımlayın ve yerel veritabanınızı aktarın. Bağlantı dizesini yeni bilgilerle güncelleyin.
- Yazma izinlerini verin: Uygulamanız dosya yüklüyor, log yazıyor veya önbellek üretiyorsa ilgili dizinlere yazma izni tanımlayın. Yalnızca o dizinlere — tüm siteye yazma izni vermek ciddi bir güvenlik açığıdır.
- SSL'i etkinleştirin ve yönlendirmeyi kurun: Sertifikayı kurun, tüm adres varyantlarını tek kanonik adrese yönlendirin.
- Test edin, sonra hata gösterimini kapatın: Tüm akışları gezin, hataları çözün ve ayrıntılı hata gösterimini kapatın.
En Sık Karşılaşılan Beş Hata
| Belirti | Yaygın neden | Çözüm |
|---|---|---|
| Genel sunucu hatası (500) | Yapılandırma dosyası hatası veya eksik bağımlılık | Ayrıntılı hatayı açıp gerçek mesajı oku |
| Uygulama başlamıyor | Uygulama havuzu yanlış sürümde/modda | Havuz ayarını düzelt, havuzu geri döndür |
| Veritabanına bağlanamıyor | Yerel bağlantı dizesi sunucuya çıkmış | Sunucu bağlantı bilgileriyle güncelle |
| Dosya yükleme çalışmıyor | Hedef dizinde yazma izni yok | Yalnızca o dizine yazma izni ver |
| İç sayfalar 404 veriyor | Yönlendirme/rota yapılandırması eksik | Yeniden yazma kurallarını kontrol et |
Sonraki Güncellemeler: Kesintiyi Azaltmak
İlk yayına alma tamamlandıktan sonra, her güncellemede kısa bir kesinti yaşanır çünkü dosyalar değiştirilirken uygulama yeniden başlar. Kesintiyi azaltmak için iki pratik vardır:
- Bakım dosyası kullanın: Yükleme başlamadan önce uygulamayı bilinçli olarak durduran bir işaret dosyası koyun. Böylece ziyaretçiler yarı yüklenmiş bir uygulamayla karşılaşmaz, düzgün bir bakım sayfası görür.
- Yükleme sırasını doğru kurun: Statik dosyaları önce, uygulama derlemelerini en son yükleyin. Böylece uygulamanın yeniden başlaması, tüm destek dosyaları yerindeyken gerçekleşir.
Modern .NET İçin Linux Seçeneği
Uygulamanız modern .NET ise Linux üzerinde de çalışabilir ve lisans maliyeti olmadığı için Linux hosting ekonomik olarak avantajlıdır. Ancak geçiş öncesi iki noktayı test edin: kodda ters bölü ile yazılmış dosya yolları ve büyük/küçük harf duyarlılığı. Windows'ta çalışan Views/Home/Index.cshtml referansı, gerçek dosya adı farklı harflerdeyse Linux'ta bulunamaz.
Klasik .NET Framework kullanıyorsanız bu seçenek yoktur; Windows hosting zorunludur.
Sonuç
.NET yayına alma sürecinde sorunların büyük bölümü koddan değil ortam farkından doğar: çalışma zamanı sürümü, uygulama havuzu ayarı, bağlantı dizesi ve dosya izinleri. Bu dört başlığı yayına almadan önce netleştirmek, canlıda hata avlamaktan çok daha hızlıdır. İlk saatte ayrıntılı hata gösterimini açık tutun — ama kapatmayı unutmayın; açık bırakılmış hata gösterimi, sunucunuz hakkında bilmesi gerekmeyen kişilere bilgi verir.
Sıkça Sorulan Sorular (SSS)
Framework'e bağımlı mı, kendi kendine yeterli mi yayınlamalıyım?
Hosting sağlayıcınızın çalışma zamanı sürümünü biliyorsanız ve stabilse framework'e bağımlı yayınlama daha küçük çıktı üretir. Sürümü kontrol edemiyorsanız veya sağlayıcı güncelleme yapabiliyorsa, kendi kendine yeterli yayınlama sürüm uyumsuzluğu riskini tamamen ortadan kaldırır.
MSSQL kullanmak zorunda mıyım?
Hayır, .NET diğer veritabanlarıyla da çalışır. Ancak mevcut uygulamanız MSSQL'e özgü saklı yordamlar veya sorgu sözdizimi kullanıyorsa, veritabanı değiştirmek kısmi bir yeniden yazım gerektirir. Yeni projede tercih özgürlüğünüz vardır.
500 hatası alıyorum ama detay göremiyorum, ne yapmalıyım?
Yapılandırma dosyasında ayrıntılı hata gösterimini geçici olarak açın, ardından sayfayı yeniden yükleyip gerçek hata mesajını okuyun. Panelinizdeki hata kayıtları da genellikle asıl nedeni gösterir. Sorun çözüldükten sonra ayrıntılı gösterimi kapatın.
Güncelleme sırasında sitem kapanır mı?
Dosyalar değiştirilirken uygulama yeniden başladığı için kısa bir kesinti olur — genellikle saniyeler. Bakım işaret dosyası kullanmak, bu süreyi ziyaretçi için düzgün bir bakım sayfasına çevirir; kesintiyi ortadan kaldırmaz ama hata sayfası görmelerini engeller.