
Windows Hosting'de ASP.NET Sitesi Yayınlama
ASP.NET (Web Forms, MVC, .NET Core) projenizi Windows hosting'de IIS, Plesk panel ve MSSQL ile adım adım nasıl yayınlayacağınızı, sık hataları ve çözümlerini anlatıyoruz.
Windows Hosting'de ASP.NET Sitesi Yayınlama
.NET ekosisteminde geliştirilen bir web uygulamasını canlıya almak, Linux tabanlı bir PHP sitesini yayınlamaktan biraz farklı işler. IIS uygulama havuzları, web.config yapılandırması, MSSQL bağlantı dizeleri ve .NET sürüm uyumluluğu gibi konular devreye girer. Bu yazıda bir ASP.NET (Web Forms, MVC veya .NET Core) projesini Windows hosting ortamında adım adım nasıl yayınlayacağınızı, sık karşılaşılan hataları ve performans/güvenlik açısından dikkat etmeniz gereken noktaları anlatıyoruz.
Amaç, Visual Studio'da tamamladığınız bir projeyi, hiç sürpriz yaşamadan çalışır durumda canlı sunucuya taşımanız. Aşağıdaki adımları sırayla takip ederseniz süreç aslında sandığınızdan çok daha kısa sürüyor.
Windows Hosting Neden Gerekli, Linux Hosting Neden Yetmiyor
ASP.NET uygulamaları .NET Framework veya .NET (Core) çalışma zamanına ve IIS (Internet Information Services) sunucu yazılımına ihtiyaç duyar. Linux tabanlı paylaşımlı hosting ortamları genelde Apache veya LiteSpeed üzerinde çalışır ve bu web sunucuları IIS'in çalıştırdığı .aspx, .ashx gibi dosya tiplerini native olarak işleyemez. Elbette .NET Core uygulamaları Linux üzerinde de host edilebilir, ancak klasik ASP.NET Web Forms veya .NET Framework MVC projeleri için pratikte en sorunsuz ve destek açısından en kolay yol Windows hosting'tir.
Windows hosting paketlerinde tipik olarak şunları bulursunuz:
- IIS üzerinde çalışan bir web sunucusu ortamı
- .NET Framework ve güncel .NET sürümleri için çalışma zamanı desteği
- MSSQL Server veritabanı (bazı paketlerde MySQL de eklenebilir)
- Yönetim paneli olarak Plesk (Windows sunucularda cPanel çalışmaz; Plesk hem Windows hem Linux'ta çalışabilen az sayıda panelden biridir)
Panel tercihinde kafanız karışıyorsa cPanel mi Plesk mi karşılaştırması yazımıza göz atabilirsiniz — Windows hosting söz konusu olduğunda seçenek zaten Plesk'e daralıyor.
Büyükweb tarafında Windows hosting paketleri Plesk panel ile birlikte gelir, panel kurulumu ek bir işlem gerektirmez; hesabınız açıldığı anda IIS, .NET çalışma zamanları ve veritabanı yönetimi panel üzerinden hazır durumdadır.
Adım 1: Projeyi Yayına Hazırlama (Publish)
Sunucuya dosya yüklemeden önce projenizi doğru şekilde derlemeniz gerekiyor. Visual Studio'da bunun için "Publish" özelliğini kullanırsınız:
- Solution Explorer'da projenize sağ tıklayıp Publish seçin.
- Hedef olarak Folder (klasöre yayınla) seçeneğini işaretleyin — dosyaları sonradan FTP ile taşıyacaksınız.
- Release konfigürasyonunu seçin (Debug değil — Debug modunda derlenmiş bir site canlıda hem yavaş çalışır hem de hata ayıklama bilgilerini dışarı sızdırır).
- Publish tuşuna bastığınızda proje, çalıştırılabilir haliyle (derlenmiş .dll dosyaları, web.config, statik varlıklar) belirttiğiniz klasöre kopyalanır.
Publish sonrası klasörde göreceğiniz temel yapı şuna benzer:
publish/
├── bin/
│ ├── YourProject.dll
│ └── (bağımlılık dll'leri)
├── wwwroot/ (ASP.NET Core projelerinde statik dosyalar)
├── web.config
└── appsettings.json (ASP.NET Core kullanıyorsanız)
Klasik ASP.NET Web Forms projelerinde wwwroot klasörü olmaz, .aspx dosyaları doğrudan kök dizinde yer alır. .NET Core projelerinde ise web.config dosyası aslında IIS'e "bu isteği ASP.NET Core Module üzerinden .NET process'ine yönlendir" talimatı veren bir köprü görevi görür.
Adım 2: Dosyaları Sunucuya Yükleme
Hazırladığınız dosyaları sunucuya taşımanın iki pratik yolu var:
FTP/FTPS ile yükleme: Plesk panelinizde bulunan FTP kullanıcı bilgileriyle FileZilla gibi bir istemci üzerinden bağlanıp httpdocs (veya tanımladığınız alt domain klasörü) içine publish klasörünüzün içeriğini yükleyebilirsiniz. Büyük projelerde binlerce küçük dosya olacağından FTP yerine sıkıştırılmış (.zip) dosya yükleyip panel üzerinden açmak çok daha hızlıdır.
Plesk Dosya Yöneticisi ile yükleme: Panelde File Manager'ı açıp doğrudan zip dosyanızı yükleyip "Extract" diyerek çıkarabilirsiniz. Yavaş bağlantılarda FTP'ye göre daha kararlı sonuç verir.
Hangi yöntemi seçerseniz seçin, bin klasörünün ve web.config dosyasının eksiksiz yüklendiğinden emin olun — eksik bir dll dosyası, sitenizin ilk açılışta 500 hatası vermesinin en yaygın nedenlerinden biridir.
Adım 3: IIS Uygulama Havuzu ve .NET Sürüm Ayarları
Dosyalar sunucuda olduğunda site otomatik çalışmayabilir; çünkü IIS tarafında doğru Application Pool (uygulama havuzu) ayarlarının yapılması gerekir. Plesk panelinde bu işlem birkaç tıkla yapılır:
- Panelde ilgili domaininizi seçin, IIS Ayarları / .NET Ayarları bölümüne girin.
- Projenizin hedef .NET sürümünü (örneğin .NET Framework 4.8 veya .NET 8) seçin. Yanlış sürüm seçimi, "could not load file or assembly" tarzı hatalara yol açar.
- Application Pool modunu kontrol edin: klasik ASP.NET projeleri Integrated Pipeline Mode ister; .NET Core projelerinde ise "No Managed Code" ayarı ile çalışan bir havuz üzerinden ASP.NET Core Module devreye girer.
- 32-bit/64-bit uyumluluğunu kontrol edin — bazı eski kütüphaneler (özellikle Web Forms projelerinde kullanılan üçüncü parti dll'ler) yalnızca 32-bit modda çalışır.
Bu ayarları panel üzerinden yapılandırdıktan sonra uygulama havuzunu yeniden başlatmanız (Restart) değişikliklerin devreye girmesi için genelde yeterlidir.
Adım 4: Veritabanı Bağlantısını Yapılandırma
Çoğu ASP.NET uygulaması bir MSSQL veritabanına bağlanır. Bunun için önce Plesk panelinden bir MSSQL veritabanı ve kullanıcı oluşturmanız gerekir. Ardından web.config dosyanızdaki bağlantı dizesini sunucu bilgileriyle güncelleyin:
<connectionStrings>
<add name="DefaultConnection"
connectionString="Server=localhost;Database=ornekdb;User Id=ornekuser;Password=GucluSifre!;"
providerName="System.Data.SqlClient" />
</connectionStrings>
.NET Core / Entity Framework Core kullanıyorsanız bu bilgi genelde appsettings.json içinde tutulur:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=ornekdb;User Id=ornekuser;Password=GucluSifre!;TrustServerCertificate=True;"
}
}
Dikkat edilmesi gereken nokta: canlı sunucuda bağlantı dizesindeki sunucu adı genelde localhost olur (veritabanı aynı sunucuda çalışıyorsa), ancak Plesk bazı kurulumlarda farklı bir instance adı da atayabilir — panelde veritabanı bilgileri ekranından tam bağlantı adını kontrol edin. Şifreleri asla kaynak kod deposuna (GitHub gibi) commit etmeyin; canlı ortam bilgilerini yalnızca sunucu üzerindeki config dosyasında tutun.
Veritabanı motoru seçimi genel olarak kafa karıştırıyorsa MySQL/MariaDB seçimi rehberimiz farklı senaryolarda hangi veritabanının daha uygun olduğuna dair fikir verebilir; ASP.NET projelerinde çoğunlukla MSSQL tercih edilse de bazı .NET Core uygulamaları MySQL ile de sorunsuz çalışır.
Adım 5: Domain Bağlama ve SSL Kurulumu
Uygulamanız çalışır hale geldikten sonra sırada domaininizi doğru şekilde yönlendirmek var. Eğer domaininizi başka bir yerden aldıysanız, DNS kayıtlarını (A kaydı) hosting sunucunuzun IP adresine yönlendirmeniz gerekir. Domain ile hosting'in aslında iki ayrı hizmet olduğunu, birinin diğerini otomatik kapsamadığını hatırlatmakta fayda var — bu ayrımı netleştirmek için web hosting ile domain farkı yazımıza bakabilirsiniz.
SSL sertifikası için modern tarayıcılar HTTPS olmayan siteleri "güvenli değil" uyarısıyla işaretlediğinden, canlıya çıkmadan önce mutlaka bir sertifika kurun. Plesk panelinden ücretsiz Let's Encrypt sertifikası birkaç tıkla aktif edilebilir; detaylı kurulum adımları için ücretsiz SSL / Let's Encrypt rehberimize bakabilirsiniz. ASP.NET tarafında HTTPS yönlendirmesini zorunlu kılmak isterseniz web.config içine URL Rewrite kuralı ekleyerek veya .NET Core'da app.UseHttpsRedirection() middleware'i ile bunu kod seviyesinde de garanti altına alabilirsiniz.
Sık Karşılaşılan Hatalar ve Çözümleri
ASP.NET yayınlama sürecinde en sık karşılaşılan sorunlar genelde şu başlıklarda toplanıyor:
HTTP 500 iç sunucu hatası: Yayın sonrası en yaygın karşılaşılan durumdur. Genelde eksik dll, yanlış .NET sürümü seçimi, veya web.config içindeki bir yapılandırma hatasından kaynaklanır. Hata ayrıntısını görebilmek için web.config'de geçici olarak şu satırı ekleyebilirsiniz:
<system.web>
<customErrors mode="Off" />
</system.web>
Bu ayarı yalnızca sorunu teşhis ederken açık tutun, canlı ortamda kapalı bırakmak (Off yerine RemoteOnly veya On) güvenlik açısından daha doğrudur çünkü hata detayları kaynak kod yollarını ve sunucu bilgilerini ziyaretçiye gösterebilir. Bu hatanın kapsamlı çözüm yollarını HTTP 500 hatası rehberimizde daha detaylı bulabilirsiniz.
"Could not load file or assembly" hatası: Genelde bin klasöründe eksik bir bağımlılık dll'i olduğunda ya da yerel makinenizle sunucudaki .NET sürümü uyuşmadığında ortaya çıkar. Publish işlemini "self-contained" modda yaparak bağımlılıkları eksiksiz taşıyabilir veya Plesk panelinden doğru runtime sürümünün kurulu olduğunu teyit edebilirsiniz.
Dosya izin (permission) hataları: IIS uygulama havuzu kullanıcısının, uygulamanın yazma yapması gereken klasörlere (örneğin log veya upload klasörü) erişimi olmayabilir. Plesk panelinden ilgili klasörün izinlerini düzenleyerek bu sorunu çözebilirsiniz.
Trust Level hataları (klasik ASP.NET'te): Bazı paylaşımlı hosting ortamlarında güvenlik amacıyla "Medium Trust" seviyesi uygulanır ve bu, dosya sistemine veya bazı sistem kaynaklarına doğrudan erişen kütüphaneleri kısıtlayabilir. Uygulamanız bu tür bir işlem yapıyorsa panel üzerinden trust seviyesini kontrol etmeniz gerekir.
Performans ve Güvenlik İçin Ek Öneriler
Site yayına alındıktan sonra işiniz bitmiş sayılmaz; birkaç ek adım hem hızı hem güvenliği önemli ölçüde etkiler:
- Disk performansı: Özellikle veritabanı ağırlıklı ASP.NET uygulamalarında disk I/O hızı doğrudan sayfa yüklenme süresine yansır. NVMe SSD altyapısının klasik SSD/HDD'ye göre sağladığı fark için NVMe SSD ve hosting hızı yazımıza bakabilirsiniz.
- Düzenli yedekleme: Bir yayın sonrası hatası ya da yanlışlıkla silinen bir dosya karşısında elinizin altında güncel bir yedek olması can kurtarır. Büyükweb hosting paketlerinde günlük otomatik yedekleme yapılır; yedekleme mantığını ve geri yükleme sürecini yedekleme rehberimizde bulabilirsiniz.
- web.config sızıntılarını kapatın: Debug modunu canlıda asla açık bırakmayın, hata sayfalarında stack trace göstermeyin, gereksiz HTTP header'ları (özellikle sunucu ve framework sürüm bilgisi veren header'lar) kapatın.
- Genel güvenlik hijyeni: Panel şifrelerinizi güçlü tutmak, FTP yerine mümkünse FTPS kullanmak ve düzenli güncelleme yapmak temel ama sıkça atlanan adımlardır. Kapsamlı bir kontrol listesi için web hosting güvenliği yazımıza göz atabilirsiniz.
Projeniz büyüdükçe, tek bir paylaşımlı IIS ortamının kaynaklarının yetmediği noktalara gelebilirsiniz — trafik arttıkça veya uygulama havuzunuz daha fazla bellek/CPU istediğinde daha üst seviye bir Windows hosting paketine geçmek mantıklı bir sonraki adım olur.
Büyükweb'de Windows hosting paketleri, ASP.NET/.NET Core projelerini yayınlamak için gereken IIS, Plesk panel ve MSSQL desteğini hazır şekilde sunar; kurulum sonrası doğrudan publish edip dosyalarınızı yükleyerek yayına geçebilirsiniz. Güncel paket ve fiyat detayları için Windows Web Hosting sayfasını inceleyebilirsiniz.
Sıkça Sorulan Sorular
ASP.NET sitesini Linux hosting üzerinde yayınlayabilir miyim?
Klasik ASP.NET Web Forms ve .NET Framework tabanlı MVC projeleri IIS gerektirdiği için Linux hosting'te çalışmaz. .NET Core/.NET 6+ projeleri teoride Linux'ta da çalışabilir ama pratikte panel desteği, hazır yapılandırma ve destek kalitesi açısından Windows hosting daha sorunsuz bir yol sunar.
Windows hosting'de hangi panel kullanılıyor?
cPanel yalnızca Linux sunucularda çalıştığı için Windows hosting'de yönetim paneli olarak Plesk kullanılır. Plesk üzerinden IIS ayarları, .NET sürüm seçimi, veritabanı yönetimi ve dosya işlemleri yapılabilir.
Yayın sonrası site 500 hatası veriyor, ilk ne kontrol etmeliyim?
Önce bin klasöründeki dll dosyalarının eksiksiz yüklendiğini, ardından panelden seçili .NET sürümünün projenizle uyumlu olduğunu kontrol edin. Sorunu teşhis etmek için customErrors ayarını geçici olarak kapatıp gerçek hata mesajını görebilirsiniz.
MSSQL yerine MySQL kullanabilir miyim?
Evet, özellikle .NET Core / Entity Framework Core projelerinde uygun sürücü ile MySQL de kullanılabilir. Ancak klasik ASP.NET Web Forms projelerinde MSSQL daha yaygın ve sorunsuz bir tercihtir.
SSL sertifikası kurmak ücretli mi?
Hayır, Let's Encrypt sertifikası Plesk panel üzerinden ücretsiz olarak birkaç tıkla kurulabilir ve otomatik yenilenir. Farklı bir ticari sertifika kullanmak isterseniz bunu da panel üzerinden ekleyebilirsiniz.
Dosyalarımı yanlışlıkla sildim, geri alabilir miyim?
Hosting paketlerinde günlük otomatik yedekleme yapıldığı için önceki bir günün yedeğinden dosya veya veritabanı geri yükleme talebinde bulunabilirsiniz. Geri yükleme süreciyle ilgili detayları destek ekibiyle paylaşabilirsiniz.
Uygulama havuzu ayarlarını kendim mi yapmalıyım, yoksa destek mi yapar?
Panel üzerinden .NET sürümü ve pipeline modu seçimini kendiniz kolayca yapabilirsiniz; takıldığınız veya emin olamadığınız noktalarda destek ekibinden yardım alabilirsiniz.
Windows hosting paketinde iade hakkım var mı?
Evet, hosting paketlerinde 7 gün içinde koşullu iade hakkınız bulunur. Güncel koşullar için İade Politikası sayfasını veya destek ekibini kontrol edebilirsiniz.
Büyükweb Hizmetleri
- Windows Web Hosting
- Windows Web Hosting paket detayları ve güncel fiyatlar
ASP.NET projenizi yayınlarken takıldığınız bir nokta olursa 0850 302 60 70 numaralı satış öncesi destek numaramızdan bize ulaşabilir ya da iletişim sayfası üzerinden mesaj bırakabilirsiniz.
Web Hosting Rehberi İlgili Hizmetlerimiz
Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin
Etiketler:



