{"id":5996,"date":"2026-11-03T12:24:55","date_gmt":"2026-11-03T09:24:55","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/?p=5996"},"modified":"2026-11-03T07:09:54","modified_gmt":"2026-11-03T04:09:54","slug":"windows-vps-asp-net-core-iis-yayinlama","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/windows-vps-asp-net-core-iis-yayinlama\/","title":{"rendered":"Windows VPS&#8217;te ASP.NET Core Yay\u0131n\u0131: IIS ve Hosting Bundle"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div class=\"aiw-summary\">\n<p class=\"aiw-box-title\">H\u0131zl\u0131 \u00f6zet<\/p>\n<p>Windows VPS, yani sanal \u00f6zel sunucunuz \u00fczerinde ASP.NET Core uygulaman\u0131z\u0131 yay\u0131nlamak i\u00e7in Windows&#8217;un web sunucusu IIS&#8217;i ve uygulaman\u0131z\u0131n .NET s\u00fcr\u00fcm\u00fcne uygun Hosting Bundle paketini kurman\u0131z gerekir. Ard\u0131ndan yay\u0131n dosyalar\u0131n\u0131 IIS sitesine ba\u011flay\u0131p klas\u00f6r izinlerini ve HTTPS ile \u015fifreli eri\u015fimi ayarlars\u0131n\u0131z.<\/p>\n<ul>\n<li>Hosting Bundle, uygulaman\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereken .NET \u00e7al\u0131\u015fma zaman\u0131n\u0131 ve IIS ba\u011flant\u0131 mod\u00fcl\u00fcn\u00fc sa\u011flar.<\/li>\n<li>Sunucuya kaynak kod yerine Release, yani yay\u0131na uygun derleme ayar\u0131yla al\u0131nm\u0131\u015f yay\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 ta\u015f\u0131rs\u0131n\u0131z.<\/li>\n<li>Uygulamay\u0131 \u00e7al\u0131\u015ft\u0131ran IIS uygulama havuzuna ayr\u0131 kimlik ve yaln\u0131zca gereken klas\u00f6r izinlerini verirsiniz.<\/li>\n<li>Yay\u0131n\u0131 sunucu d\u0131\u015f\u0131ndan HTTPS ile kontrol eder, g\u00fcncelleme \u00f6ncesinde geri d\u00f6n\u00fc\u015f kopyas\u0131 al\u0131rs\u0131n\u0131z.<\/li>\n<\/ul>\n<\/div>\n<p>Uygulaman\u0131z kendi bilgisayar\u0131n\u0131zda a\u00e7\u0131l\u0131yor ama VPS&#8217;ye ta\u015f\u0131d\u0131\u011f\u0131n\u0131zda hata veriyorsa sorun yaln\u0131zca kodda olmayabilir. Eksik \u00e7al\u0131\u015fma zaman\u0131, yanl\u0131\u015f yay\u0131n klas\u00f6r\u00fc yolu veya yetersiz dosya izinleri de uygulaman\u0131n ba\u015flamas\u0131n\u0131 engelleyebilir. \u00d6nce sunucunun gerekli bile\u015fenlerini, ard\u0131ndan yay\u0131n dosyalar\u0131n\u0131 ve eri\u015fim ayarlar\u0131n\u0131 kontrol ederek sorunun hangi a\u015famada oldu\u011funu ay\u0131rt edebilirsiniz.<\/p>\n<p>\u00d6rnek senaryoda Windows Server 2022 \u00fczerinde IIS 10 ve .NET 10 kullanan, veritaban\u0131 gerektirmeyen bir uygulamayla ilerleyeceksiniz. Kurulumun sonunda uygulaman\u0131z\u0131 alan ad\u0131n\u0131z \u00fczerinden HTTPS ile a\u00e7abilecek, ba\u015flang\u0131\u00e7 hatalar\u0131n\u0131 ay\u0131rt edebilecek ve gerekti\u011finde \u00f6nceki s\u00fcr\u00fcme d\u00f6nebilece\u011finiz bir g\u00fcncelleme yolu olu\u015fturabileceksiniz.<\/p>\n<div id=\"toc_container\" role=\"navigation\" aria-label=\"Table of Contents\" data-nosnippet class=\"toc_transparent no_bullets toc_numbered toc_title_center\"><p class=\"toc_title\">\u0130\u00e7indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Ornek_ortami_hazirlayin_IIS_ve_Hosting_Bundle\"><span class=\"toc_number toc_depth_1\">1.<\/span> \u00d6rnek ortam\u0131 haz\u0131rlay\u0131n: IIS ve Hosting Bundle<\/a><ul><li><a href=\"#Erisim_ve_geri_donus_hazirligi\"><span class=\"toc_number toc_depth_2\">1.1.<\/span> Eri\u015fim ve geri d\u00f6n\u00fc\u015f haz\u0131rl\u0131\u011f\u0131<\/a><\/li><li><a href=\"#IIS_rolunu_ve_yonetim_araclarini_kurun\"><span class=\"toc_number toc_depth_2\">1.2.<\/span> IIS rol\u00fcn\u00fc ve y\u00f6netim ara\u00e7lar\u0131n\u0131 kurun<\/a><\/li><li><a href=\"#Hosting_Bundle_kurulumunu_dogrulayin\"><span class=\"toc_number toc_depth_2\">1.3.<\/span> Hosting Bundle kurulumunu do\u011frulay\u0131n<\/a><\/li><\/ul><\/li><li><a href=\"#Yayin_ciktisini_alin_uygulama_havuzunu_ve_yetkileri_ayarlayin\"><span class=\"toc_number toc_depth_1\">2.<\/span> Yay\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131n, uygulama havuzunu ve yetkileri ayarlay\u0131n<\/a><ul><li><a href=\"#Projeyi_olusturup_Release_ciktisini_alin\"><span class=\"toc_number toc_depth_2\">2.1.<\/span> Projeyi olu\u015fturup Release \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131n<\/a><\/li><li><a href=\"#Yayin_dosyalarini_VPS8217ye_tasiyin\"><span class=\"toc_number toc_depth_2\">2.2.<\/span> Yay\u0131n dosyalar\u0131n\u0131 VPS&#8217;ye ta\u015f\u0131y\u0131n<\/a><\/li><li><a href=\"#Havuzu_ve_klasor_yetkilerini_ayarlayin\"><span class=\"toc_number toc_depth_2\">2.3.<\/span> Havuzu ve klas\u00f6r yetkilerini ayarlay\u0131n<\/a><\/li><\/ul><\/li><li><a href=\"#IIS_sitesini_acin_alan_adini_baglayin_ve_HTTPS8217i_dogrulayin\"><span class=\"toc_number toc_depth_1\">3.<\/span> IIS sitesini a\u00e7\u0131n, alan ad\u0131n\u0131 ba\u011flay\u0131n ve HTTPS&#8217;i do\u011frulay\u0131n<\/a><ul><li><a href=\"#Siteyi_olusturun_ve_yerel_istegi_kontrol_edin\"><span class=\"toc_number toc_depth_2\">3.1.<\/span> Siteyi olu\u015fturun ve yerel iste\u011fi kontrol edin<\/a><\/li><li><a href=\"#DNS8217i_ve_gelen_baglantilari_acin\"><span class=\"toc_number toc_depth_2\">3.2.<\/span> DNS&#8217;i ve gelen ba\u011flant\u0131lar\u0131 a\u00e7\u0131n<\/a><\/li><li><a href=\"#Sertifikayi_edinin_ve_HTTPS_baglamasini_dogrulayin\"><span class=\"toc_number toc_depth_2\">3.3.<\/span> Sertifikay\u0131 edinin ve HTTPS ba\u011flamas\u0131n\u0131 do\u011frulay\u0131n<\/a><\/li><\/ul><\/li><li><a href=\"#Baslangic_hatalarini_ayirt_edin_ve_guvenli_guncelleme_yapin\"><span class=\"toc_number toc_depth_1\">4.<\/span> Ba\u015flang\u0131\u00e7 hatalar\u0131n\u0131 ay\u0131rt edin ve g\u00fcvenli g\u00fcncelleme yap\u0131n<\/a><ul><li><a href=\"#Hata_koduyla_sorunun_yerini_daraltin\"><span class=\"toc_number toc_depth_2\">4.1.<\/span> Hata koduyla sorunun yerini daralt\u0131n<\/a><\/li><li><a href=\"#Baslangic_gunlugunu_gecici_acin\"><span class=\"toc_number toc_depth_2\">4.2.<\/span> Ba\u015flang\u0131\u00e7 g\u00fcnl\u00fc\u011f\u00fcn\u00fc ge\u00e7ici a\u00e7\u0131n<\/a><\/li><li><a href=\"#Guncellemeyi_geri_donus_kopyasiyla_yapin\"><span class=\"toc_number toc_depth_2\">4.3.<\/span> G\u00fcncellemeyi geri d\u00f6n\u00fc\u015f kopyas\u0131yla yap\u0131n<\/a><\/li><\/ul><\/li><li><a href=\"#Sik_Sorulan_Sorular\"><span class=\"toc_number toc_depth_1\">5.<\/span> S\u0131k Sorulan Sorular<\/a><ul><li><a href=\"#Windows_VPS8217ye_NET_SDK_kurmam_gerekiyor_mu\"><span class=\"toc_number toc_depth_2\">5.1.<\/span> Windows VPS&#8217;ye .NET SDK kurmam gerekiyor mu?<\/a><\/li><li><a href=\"#Ayni_sunucuda_farkli_NET_surumleri_calisabilir_mi\"><span class=\"toc_number toc_depth_2\">5.2.<\/span> Ayn\u0131 sunucuda farkl\u0131 .NET s\u00fcr\u00fcmleri \u00e7al\u0131\u015fabilir mi?<\/a><\/li><li><a href=\"#Sunucu_yeniden_baslayinca_kullanicilarin_oturumu_kapanir_mi\"><span class=\"toc_number toc_depth_2\">5.3.<\/span> Sunucu yeniden ba\u015flay\u0131nca kullan\u0131c\u0131lar\u0131n oturumu kapan\u0131r m\u0131?<\/a><\/li><li><a href=\"#Surekli_arka_plan_islerini_IIS_uygulamasinda_calistirabilir_miyim\"><span class=\"toc_number toc_depth_2\">5.4.<\/span> S\u00fcrekli arka plan i\u015flerini IIS uygulamas\u0131nda \u00e7al\u0131\u015ft\u0131rabilir miyim?<\/a><\/li><\/ul><\/li><li><a href=\"#Yayina_cikmadan_once_son_kontrol_listesi\"><span class=\"toc_number toc_depth_1\">6.<\/span> Yay\u0131na \u00e7\u0131kmadan \u00f6nce son kontrol listesi<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Ornek_ortami_hazirlayin_IIS_ve_Hosting_Bundle\">\u00d6rnek ortam\u0131 haz\u0131rlay\u0131n: IIS ve Hosting Bundle<\/span><\/h2>\n<p>Uygulaman\u0131z\u0131n IIS \u00fczerinden a\u00e7\u0131labilmesi i\u00e7in \u00f6nce web sunucusunu, ard\u0131ndan uygulamay\u0131 \u00e7al\u0131\u015ft\u0131racak bile\u015fenleri kuracaks\u0131n\u0131z. IIS, Windows&#8217;un web sunucusudur. Hosting Bundle paketi ise .NET \u00e7al\u0131\u015fma zamanlar\u0131n\u0131 ve ASP.NET Core uygulamas\u0131n\u0131 IIS&#8217;e ba\u011flayan mod\u00fcl\u00fc sa\u011flar.<\/p>\n<div class=\"aiw-note aiw-note-example\">\n<p class=\"aiw-box-title\">\u00d6rnek senaryo<\/p>\n<p>Temiz Windows Server 2022 x64 VPS \u00fczerinde IIS 10 ve .NET 10 LTS kullanaca\u011f\u0131z. x64, 64 bit mimariyi; LTS, uzun s\u00fcreli destek s\u00fcr\u00fcm\u00fcn\u00fc belirtir. Daha sonra veritaban\u0131 gerektirmeyen OrnekWeb uygulamas\u0131n\u0131 C:\\Sites\\OrnekWeb klas\u00f6r\u00fcnden yay\u0131nlayaca\u011f\u0131z.<\/p>\n<\/div>\n<h3><span id=\"Erisim_ve_geri_donus_hazirligi\">Eri\u015fim ve geri d\u00f6n\u00fc\u015f haz\u0131rl\u0131\u011f\u0131<\/span><\/h3>\n<p>VPS&#8217;ye RDP, yani Uzak Masa\u00fcst\u00fc ba\u011flant\u0131s\u0131yla y\u00f6netici hesab\u0131n\u0131z \u00fczerinden ba\u011flan\u0131n. Sunucuda mevcut veri varsa g\u00fcncelleme ve rol kurulumundan \u00f6nce sunucu yede\u011fi al\u0131n. Sa\u011flay\u0131c\u0131n\u0131z\u0131n yedekleme hizmetini kullan\u0131yorsan\u0131z panelde yede\u011fin tamamland\u0131\u011f\u0131n\u0131 kontrol edin ve geri y\u00fcklemenin nereden ba\u015flat\u0131laca\u011f\u0131n\u0131 \u00f6\u011frenin. Mevcut IIS ayarlar\u0131 varsa bunlar\u0131n da ayr\u0131 bir yede\u011fini saklay\u0131n.<\/p>\n<p>Ard\u0131ndan <strong>Windows Update<\/strong> (Windows g\u00fcncellemeleri) b\u00f6l\u00fcm\u00fcnde g\u00fcncellemeleri y\u00fckleyip bekleyen yeniden ba\u015flatmay\u0131 tamamlay\u0131n. Mevcut sitelerin \u00e7al\u0131\u015ft\u0131\u011f\u0131 bir sunucuda bu i\u015flemler hizmeti durdurabilece\u011finden bak\u0131m aral\u0131\u011f\u0131 kullan\u0131n.<\/p>\n<p>Alan ad\u0131n\u0131z\u0131n DNS y\u00f6netim paneline eri\u015febildi\u011finizi kontrol edin ve VPS&#8217;nin genel IPv4 adresini not al\u0131n. DNS, alan ad\u0131n\u0131 sunucunun IP adresine y\u00f6nlendiren kay\u0131tlar\u0131 tutar. \u00d6rnekteki <code>uygulama.example.com<\/code> temsil\u00eedir; kendi alt alan ad\u0131n\u0131z\u0131 kullanacaks\u0131n\u0131z. Mevcut bir siteyi ta\u015f\u0131yorsan\u0131z DNS kayd\u0131n\u0131 hen\u00fcz de\u011fi\u015ftirmeyin; y\u00f6nlendirmeyi site haz\u0131r oldu\u011funda yapaca\u011f\u0131z.<\/p>\n<h3><span id=\"IIS_rolunu_ve_yonetim_araclarini_kurun\">IIS rol\u00fcn\u00fc ve y\u00f6netim ara\u00e7lar\u0131n\u0131 kurun<\/span><\/h3>\n<ol>\n<li><strong>Server Manager &#8211; Manage &#8211; Add Roles and Features<\/strong> yolundan rol ve \u00f6zellik ekleme sihirbaz\u0131n\u0131 a\u00e7\u0131n. <strong>Role-based or feature-based installation<\/strong>, yani rol tabanl\u0131 kurulumu se\u00e7in. Sunucu se\u00e7im ekran\u0131nda ba\u011fl\u0131 oldu\u011funuz VPS&#8217;yi se\u00e7erek ilerleyin.<\/li>\n<li><strong>Server Roles &#8211; Web Server (IIS)<\/strong> se\u00e7ene\u011fini i\u015faretleyin. A\u00e7\u0131lan pencerede <strong>Add Features<\/strong> (\u00f6zellik ekle) ile gerekli y\u00f6netim bile\u015fenlerini ekleyin.<\/li>\n<li><strong>Role Services<\/strong> (rol hizmetleri) ekran\u0131nda varsay\u0131lan se\u00e7imleri koruyun; <strong>Management Tools &#8211; IIS Management Console<\/strong> se\u00e7ili olsun. Bu bile\u015fen, siteleri y\u00f6netece\u011finiz IIS aray\u00fcz\u00fcn\u00fc kurar. ASP.NET Core i\u00e7in eski ASP.NET 4.x rol hizmetini eklemeniz gerekmez. <strong>Install<\/strong> (y\u00fckle) ile kurulumu tamamlay\u0131n.<\/li>\n<\/ol>\n<p>VPS&#8217;de taray\u0131c\u0131dan <code>http:\/\/localhost<\/code> adresini a\u00e7\u0131n. Temiz kurulumda IIS kar\u015f\u0131lama sayfas\u0131 g\u00f6r\u00fcnmelidir. Bu, web sunucusunun sunucu i\u00e7inden gelen HTTP iste\u011fine yan\u0131t verdi\u011fini g\u00f6sterir; d\u0131\u015far\u0131dan eri\u015fimi sonraki ad\u0131mlarda kontrol edeceksiniz.<\/p>\n<h3><span id=\"Hosting_Bundle_kurulumunu_dogrulayin\">Hosting Bundle kurulumunu do\u011frulay\u0131n<\/span><\/h3>\n<p>VPS&#8217;de Microsoft&#8217;un resm\u00ee .NET indirme sayfas\u0131n\u0131 a\u00e7\u0131n. .NET 10 s\u00fcr\u00fcm\u00fcn\u00fcn g\u00fcncel bak\u0131m s\u00fcr\u00fcm\u00fc alt\u0131nda, ASP.NET Core Runtime b\u00f6l\u00fcm\u00fcndeki <strong>Hosting Bundle<\/strong> Windows y\u00fckleyicisini indirin. Bak\u0131m s\u00fcr\u00fcm\u00fc, ayn\u0131 ana s\u00fcr\u00fcm i\u00e7in yay\u0131mlanan d\u00fczeltmeleri i\u00e7erir.<\/p>\n<p>IIS kurulumundan sonra y\u00fckleyiciyi y\u00f6netici olarak \u00e7al\u0131\u015ft\u0131r\u0131p varsay\u0131lan bile\u015fenlerle kurulumu bitirin. Paket, uygulaman\u0131n ihtiya\u00e7 duydu\u011fu .NET ve ASP.NET Core \u00e7al\u0131\u015fma zamanlar\u0131yla IIS ba\u011flant\u0131s\u0131n\u0131 sa\u011flayan ASP.NET Core Module bile\u015fenini kurar. Hosting Bundle&#8217;\u0131 IIS&#8217;ten \u00f6nce y\u00fcklediyseniz IIS kurulumu tamamland\u0131ktan sonra y\u00fckleyiciyi yeniden a\u00e7\u0131p <strong>Repair<\/strong> (onar) se\u00e7in; b\u00f6ylece IIS mod\u00fcl\u00fcn\u00fcn kurulumu da tamamlan\u0131r.<\/p>\n<p>Kurulumdan sonra VPS&#8217;yi yeniden ba\u015flat\u0131n; mevcut siteler varsa bunu bak\u0131m aral\u0131\u011f\u0131nda yap\u0131n. Yeniden ba\u011fland\u0131\u011f\u0131n\u0131zda VPS&#8217;de yeni bir PowerShell penceresi a\u00e7\u0131p kurulu \u00e7al\u0131\u015fma zamanlar\u0131n\u0131 listeleyin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">dotnet --list-runtimes<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>Microsoft.NETCore.App 10.0.x<\/code> ve <code>Microsoft.AspNetCore.App 10.0.x<\/code> sat\u0131rlar\u0131n\u0131 g\u00f6rmelisiniz; <code>x<\/code> kurulu bak\u0131m s\u00fcr\u00fcm\u00fcn\u00fcn numaras\u0131n\u0131 temsil eder. Bu sat\u0131rlar, \u00f6rnek uygulaman\u0131n kullanaca\u011f\u0131 \u00e7al\u0131\u015fma zamanlar\u0131n\u0131n bulundu\u011funu g\u00f6sterir.<\/p>\n<p>IIS ba\u011flant\u0131s\u0131n\u0131 da kontrol etmek i\u00e7in <strong>Server Manager &#8211; Tools &#8211; Internet Information Services (IIS) Manager<\/strong> yolundan IIS y\u00f6netim aray\u00fcz\u00fcn\u00fc a\u00e7\u0131n. Soldaki ba\u011flant\u0131 a\u011fac\u0131nda sunucuyu se\u00e7ip <strong>Modules<\/strong> (mod\u00fcller) listesini a\u00e7\u0131n. <code>AspNetCoreModuleV2<\/code> kayd\u0131 da varsa yay\u0131n dosyalar\u0131n\u0131 haz\u0131rlamaya ge\u00e7ebilirsiniz. \u00c7al\u0131\u015fma zamanlar\u0131 listelendi\u011fi h\u00e2lde mod\u00fcl g\u00f6r\u00fcnm\u00fcyorsa Hosting Bundle y\u00fckleyicisinde onar\u0131m yap\u0131n; yeniden ba\u015flatt\u0131ktan sonra ayn\u0131 listeyi tekrar kontrol edin.<\/p>\n<h2><span id=\"Yayin_ciktisini_alin_uygulama_havuzunu_ve_yetkileri_ayarlayin\">Yay\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131n, uygulama havuzunu ve yetkileri ayarlay\u0131n<\/span><\/h2>\n<h3><span id=\"Projeyi_olusturup_Release_ciktisini_alin\">Projeyi olu\u015fturup Release \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131n<\/span><\/h3>\n<p>\u00d6rnek uygulaman\u0131n yay\u0131n dosyalar\u0131n\u0131 geli\u015ftirici bilgisayar\u0131n\u0131zda haz\u0131rlayacaks\u0131n\u0131z; VPS&#8217;de derleme yapman\u0131z gerekmez. Windows bilgisayar\u0131n\u0131za Microsoft&#8217;un resm\u00ee .NET indirme sayfas\u0131ndan <strong>.NET 10 SDK Windows x64<\/strong> paketini indirip kurun. SDK, projeyi olu\u015fturma ve derleme ara\u00e7lar\u0131n\u0131 sa\u011flar. Yeni bir PowerShell penceresinde <code>dotnet --list-sdks<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n. \u00c7\u0131kt\u0131da <code>10.0.x<\/code> ile ba\u015flayan bir s\u00fcr\u00fcm g\u00f6rd\u00fckten sonra a\u015fa\u011f\u0131daki komutlar\u0131 ayn\u0131 pencerede \u00e7al\u0131\u015ft\u0131r\u0131n. \u00d6rnekte proje ve yay\u0131n klas\u00f6rlerinin hen\u00fcz kullan\u0131lmad\u0131\u011f\u0131n\u0131 varsay\u0131yoruz:<\/p>\n<figure class=\"aiw-figure\" data-aiw-visual-id=\"5992\" data-aiw-visual-key=\"7343f45ffe8fe43a3443d287264110a6b1b3634aefb6693221f134d44c9156f1\"><img decoding=\"async\" src=\"https:\/\/www.dchost.com\/blog\/wp-content\/uploads\/2026\/11\/dchost-flow-tr-fd3a88c73bc5d27d9399.png\" alt=\"OrnekWeb projesinin yay\u0131n \u00e7\u0131kt\u0131s\u0131 al\u0131narak VPS\u2019ye ta\u015f\u0131nmas\u0131n\u0131, uygulama havuzunun ve klas\u00f6r yetkilerinin ayarlanmas\u0131n\u0131 g\u00f6steren ak\u0131\u015f.\" width=\"840\" height=\"1227\" loading=\"lazy\" class=\"aiw-article-visual wp-image-5992\" srcset=\"https:\/\/www.dchost.com\/blog\/wp-content\/uploads\/2026\/11\/dchost-flow-tr-fd3a88c73bc5d27d9399.png 840w, https:\/\/www.dchost.com\/blog\/wp-content\/uploads\/2026\/11\/dchost-flow-tr-fd3a88c73bc5d27d9399-205x300.png 205w, https:\/\/www.dchost.com\/blog\/wp-content\/uploads\/2026\/11\/dchost-flow-tr-fd3a88c73bc5d27d9399-701x1024.png 701w, https:\/\/www.dchost.com\/blog\/wp-content\/uploads\/2026\/11\/dchost-flow-tr-fd3a88c73bc5d27d9399-768x1122.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption>Ak\u0131\u015f \u015femas\u0131: Ak\u0131\u015f, kaynak koddan yay\u0131n dosyalar\u0131na ge\u00e7i\u015fi ve IIS\u2019in bu dosyalar\u0131 s\u0131n\u0131rl\u0131 yetkili uygulama havuzu kimli\u011fiyle kullanmas\u0131 i\u00e7in gereken haz\u0131rl\u0131\u011f\u0131 g\u00f6sterir.<\/figcaption><\/figure>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">New-Item -ItemType Directory -Force C:\\src | Out-Null\nSet-Location C:\\src\ndotnet new webapp -n OrnekWeb -f net10.0\nSet-Location C:\\src\\OrnekWeb\ndotnet publish -c Release -r win-x64 --self-contained false -p:AspNetCoreHostingModel=InProcess -o C:\\publish\\OrnekWeb<\/code><\/pre>\n<p>Bu komutlar, sayfa tabanl\u0131 ASP.NET Core yap\u0131s\u0131 olan Razor Pages ile veritaban\u0131 gerektirmeyen bir web projesi olu\u015fturur ve yay\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131r. <strong>Release<\/strong>, yay\u0131na uygun derleme ayar\u0131d\u0131r. <strong>Framework-dependent<\/strong>, uygulaman\u0131n sunucudaki .NET \u00e7al\u0131\u015fma zaman\u0131n\u0131 kullanmas\u0131 demektir; <code>--self-contained false<\/code> bunu se\u00e7er. <code>win-x64<\/code> 64 bit Windows hedefini, <strong>in-process<\/strong> ise uygulaman\u0131n IIS&#8217;in istekleri i\u015fleyen s\u00fcreci i\u00e7inde \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtir.<\/p>\n<p>Yay\u0131n tamamland\u0131\u011f\u0131nda <code>C:\\publish\\OrnekWeb<\/code> i\u00e7inde <code>OrnekWeb.dll<\/code>, <code>OrnekWeb.runtimeconfig.json<\/code>, <code>wwwroot<\/code> ve <code>web.config<\/code> bulunmal\u0131d\u0131r. Otomatik \u00fcretilen <code>web.config<\/code>, IIS&#8217;in ASP.NET Core Module \u00fczerinden uygulamay\u0131 ba\u015flatmas\u0131n\u0131 ve istekleri ona iletmesini sa\u011flar. Dosyay\u0131 bir metin d\u00fczenleyicide a\u00e7\u0131p <code>AspNetCoreModuleV2<\/code> ve <code>hostingModel=\"inprocess\"<\/code> de\u011ferlerini kontrol edin; eski ASP.NET uygulamalar\u0131na ait bir ayar dosyas\u0131yla de\u011fi\u015ftirmeyin.<\/p>\n<h3><span id=\"Yayin_dosyalarini_VPS8217ye_tasiyin\">Yay\u0131n dosyalar\u0131n\u0131 VPS&#8217;ye ta\u015f\u0131y\u0131n<\/span><\/h3>\n<p>Geli\u015ftirici bilgisayar\u0131nda Uzak Masa\u00fcst\u00fc Ba\u011flant\u0131s\u0131&#8217;n\u0131 a\u00e7\u0131n. <strong>Show Options &#8211; Local Resources &#8211; More &#8211; Drives<\/strong> (se\u00e7enekleri g\u00f6ster &#8211; yerel kaynaklar &#8211; di\u011fer &#8211; s\u00fcr\u00fcc\u00fcler) yolundan yerel C s\u00fcr\u00fcc\u00fcs\u00fcn\u00fc i\u015faretleyerek VPS&#8217;ye yeniden ba\u011flan\u0131n. Bu se\u00e7im, yerel dosyalar\u0131n\u0131za uzak oturumdan eri\u015fmenizi sa\u011flar.<\/p>\n<p>VPS&#8217;de Dosya Gezgini&#8217;nin <strong>This PC<\/strong> (bu bilgisayar) b\u00f6l\u00fcm\u00fcndeki y\u00f6nlendirilmi\u015f C s\u00fcr\u00fcc\u00fcs\u00fcn\u00fc a\u00e7\u0131n. Buradaki <code>C:\\publish\\OrnekWeb<\/code> klas\u00f6r\u00fcn\u00fcn <em>i\u00e7eri\u011fini<\/em>, VPS \u00fczerinde olu\u015fturaca\u011f\u0131n\u0131z <code>C:\\Sites\\OrnekWeb<\/code> klas\u00f6r\u00fcne kopyalay\u0131n. Kaynak projeyi de\u011fil, yay\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 ta\u015f\u0131yorsunuz; kopyalama bitince <code>web.config<\/code> do\u011frudan hedef klas\u00f6rde g\u00f6r\u00fcnmelidir.<\/p>\n<p>Bu \u00f6rnekte hedef klas\u00f6r bo\u015ftur. Mevcut yay\u0131n dosyalar\u0131 varsa \u00fczerine yazmak yerine ilerideki g\u00fcvenli g\u00fcncelleme ad\u0131mlar\u0131n\u0131 kullan\u0131n. \u00d6rnek uygulamada ortam\u0131 belirleyen bir de\u011fi\u015fken tan\u0131mlanmad\u0131\u011f\u0131nda varsay\u0131lan ortam <strong>Production<\/strong>, yani \u00fcretim ortam\u0131d\u0131r. Geli\u015ftirme bilgisayar\u0131ndaki <code>launchSettings.json<\/code> IIS ayar\u0131 olarak kullan\u0131lmaz.<\/p>\n<h3><span id=\"Havuzu_ve_klasor_yetkilerini_ayarlayin\">Havuzu ve klas\u00f6r yetkilerini ayarlay\u0131n<\/span><\/h3>\n<p>Uygulama havuzu, sitenizin \u00e7al\u0131\u015faca\u011f\u0131 s\u00fcreci ve Windows kimli\u011fini belirler. VPS&#8217;de IIS Manager &#8211; <strong>Application Pools<\/strong> (uygulama havuzlar\u0131) &#8211; <strong>Add Application Pool<\/strong> (uygulama havuzu ekle) yolunu a\u00e7\u0131n. <strong>Name<\/strong> (ad) alan\u0131na <code>OrnekWeb<\/code> yaz\u0131n. <strong>.NET CLR version<\/strong> (eski .NET Framework \u00e7al\u0131\u015fma zaman\u0131 s\u00fcr\u00fcm\u00fc) listesinden <code>No Managed Code<\/code> se\u00e7in; <strong>Managed pipeline mode<\/strong> (istek i\u015fleme modu) de\u011ferini <code>Integrated<\/code> b\u0131rak\u0131n. ASP.NET Core kendi \u00e7al\u0131\u015fma zaman\u0131n\u0131 kulland\u0131\u011f\u0131ndan eski .NET Framework \u00e7al\u0131\u015fma zaman\u0131n\u0131 se\u00e7meniz gerekmez. <strong>OK<\/strong> ile kaydedince havuz listede g\u00f6r\u00fcnmelidir.<\/p>\n<p>Olu\u015fan havuzu se\u00e7ip <strong>Advanced Settings<\/strong> (geli\u015fmi\u015f ayarlar) ekran\u0131n\u0131 a\u00e7\u0131n. <strong>Enable 32-Bit Applications<\/strong> (32 bit uygulamalar\u0131 etkinle\u015ftir) de\u011ferini <code>False<\/code>, <strong>Identity<\/strong> (\u00e7al\u0131\u015ft\u0131rma kimli\u011fi) de\u011ferini <code>ApplicationPoolIdentity<\/code> yap\u0131p kaydedin. B\u00f6ylece bir sonraki b\u00f6l\u00fcmde siteyi bu havuza ba\u011flad\u0131\u011f\u0131n\u0131zda 64 bit yay\u0131n\u0131n\u0131z, havuza \u00f6zel <code>IIS AppPool\\OrnekWeb<\/code> Windows kimli\u011fiyle \u00e7al\u0131\u015f\u0131r.<\/p>\n<p>Havuzun uygulama dosyalar\u0131n\u0131 okuyabilmesi i\u00e7in bu kimli\u011fe Windows&#8217;un NTFS dosya sistemi \u00fczerinde okuma ve \u00e7al\u0131\u015ft\u0131rma izni verin. VPS&#8217;de PowerShell&#8217;i y\u00f6netici olarak a\u00e7\u0131p a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">icacls &quot;C:\\Sites\\OrnekWeb&quot; \/grant &quot;IIS AppPool\\OrnekWeb:(OI)(CI)RX&quot;<\/code><\/pre>\n<p><code>RX<\/code> okuma ve \u00e7al\u0131\u015ft\u0131rma iznidir; <code>(OI)(CI)<\/code> izni alt dosya ve klas\u00f6rlere aktar\u0131r. Komutun hata vermeden tamamlanmas\u0131n\u0131n ard\u0131ndan Dosya Gezgini&#8217;nde yay\u0131n klas\u00f6r\u00fcne sa\u011f t\u0131klay\u0131n. <strong>Properties &#8211; Security<\/strong> (\u00f6zellikler &#8211; g\u00fcvenlik) ekran\u0131nda havuz kimli\u011fini se\u00e7ti\u011finizde <strong>Read &amp; execute<\/strong> (okuma ve \u00e7al\u0131\u015ft\u0131rma) izni g\u00f6r\u00fcnmelidir.<\/p>\n<p>Uygulaman\u0131n kendi yay\u0131n dosyalar\u0131n\u0131 de\u011fi\u015ftirmesi gerekmedi\u011finden k\u00f6k klas\u00f6re yazma veya tam denetim izni vermeyin. Bu komut mevcut izinleri kald\u0131rmaz; ayn\u0131 ekranda ba\u015fka gruplardan gelen geni\u015f yazma izinleri bulunup bulunmad\u0131\u011f\u0131n\u0131 da inceleyin. Tan\u0131lama gerekti\u011finde yaln\u0131z <code>logs<\/code> alt klas\u00f6r\u00fcne yazma izni ekleyece\u011fiz; \u00f6rnek uygulaman\u0131n normal \u00e7al\u0131\u015fmas\u0131 i\u00e7in buna gerek yoktur.<\/p>\n<h2><span id=\"IIS_sitesini_acin_alan_adini_baglayin_ve_HTTPS8217i_dogrulayin\">IIS sitesini a\u00e7\u0131n, alan ad\u0131n\u0131 ba\u011flay\u0131n ve HTTPS&#8217;i do\u011frulay\u0131n<\/span><\/h2>\n<h3><span id=\"Siteyi_olusturun_ve_yerel_istegi_kontrol_edin\">Siteyi olu\u015fturun ve yerel iste\u011fi kontrol edin<\/span><\/h3>\n<p>Yay\u0131n klas\u00f6r\u00fcn\u00fc haz\u0131rlad\u0131n\u0131z; \u015fimdi IIS&#8217;in bu klas\u00f6r\u00fc hangi alan ad\u0131 ve uygulama havuzuyla kullanaca\u011f\u0131n\u0131 belirleyeceksiniz. VPS&#8217;de IIS Manager &#8211; <strong>Sites &#8211; Add Website<\/strong> (site ekle) yolunu a\u00e7\u0131n. <strong>Site name<\/strong> (site ad\u0131) alan\u0131na <code>OrnekWeb<\/code> yaz\u0131n; <strong>Application pool &#8211; Select<\/strong> \u00fczerinden mevcut <code>OrnekWeb<\/code> havuzunu se\u00e7in. <strong>Physical path<\/strong>, yani yay\u0131n klas\u00f6r\u00fcn\u00fcn yolu i\u00e7in <code>C:\\Sites\\OrnekWeb<\/code> girin.<\/p>\n<p><strong>Binding<\/strong> (istekleri siteyle e\u015fle\u015ftiren ba\u011flama) b\u00f6l\u00fcm\u00fcnde <strong>Type<\/strong> (t\u00fcr) de\u011ferini <code>http<\/code>, <strong>IP address<\/strong> (IP adresi) de\u011ferini <code>All Unassigned<\/code>, <strong>Port<\/strong> de\u011ferini <code>80<\/code> yap\u0131n. <strong>Host name<\/strong> (alan ad\u0131) alan\u0131na kendi alt alan ad\u0131n\u0131z\u0131 yaz\u0131n; burada <code>uygulama.example.com<\/code> kullan\u0131yoruz. Bu ba\u011flama, belirtilen alan ad\u0131na gelen HTTP isteklerini OrnekWeb sitesine y\u00f6nlendirir. <strong>OK<\/strong> sonras\u0131nda site ba\u015flamal\u0131d\u0131r. Ayn\u0131 IP, alan ad\u0131 ve port birle\u015fimini kullanan ba\u015fka bir ba\u011flama olmamal\u0131d\u0131r.<\/p>\n<p>DNS&#8217;i de\u011fi\u015ftirmeden do\u011fru siteye ula\u015fabildi\u011finizi g\u00f6rmek i\u00e7in VPS&#8217;de PowerShell \u00fczerinden a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n; temsil\u00ee alan ad\u0131n\u0131 kendi alan ad\u0131n\u0131zla de\u011fi\u015ftirin. Komut, iste\u011fi do\u011frudan yerel IIS&#8217;e g\u00f6nderirken hangi siteyi istedi\u011finizi de belirtir:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">curl.exe -i -H &quot;Host: uygulama.example.com&quot; http:\/\/127.0.0.1\/<\/code><\/pre>\n<p>Beklenen yan\u0131t <code>200 OK<\/code> ve OrnekWeb sayfas\u0131n\u0131n HTML i\u00e7eri\u011fidir. IIS kar\u015f\u0131lama sayfas\u0131 geliyorsa dosyalar\u0131 de\u011fi\u015ftirmeden \u00f6nce sitenin <strong>Bindings<\/strong> (ba\u011flamalar) listesindeki alan ad\u0131n\u0131 komutta kulland\u0131\u011f\u0131n\u0131z adla kar\u015f\u0131la\u015ft\u0131r\u0131n. HTTPS y\u00f6nlendirmesi varsa <code>Location<\/code> ba\u015fl\u0131\u011f\u0131 y\u00f6nlendirilen adresi g\u00f6sterir; \u015fifreli ba\u011flant\u0131y\u0131 a\u015fa\u011f\u0131daki ad\u0131mlarla tamamlay\u0131n.<\/p>\n<h3><span id=\"DNS8217i_ve_gelen_baglantilari_acin\">DNS&#8217;i ve gelen ba\u011flant\u0131lar\u0131 a\u00e7\u0131n<\/span><\/h3>\n<p>Yerel kontrol ba\u015far\u0131l\u0131ysa alan ad\u0131n\u0131 sunucuya y\u00f6nlendirebilirsiniz. DNS, alan ad\u0131n\u0131 IP adresine \u00e7eviren sistemdir. Alan ad\u0131n\u0131z\u0131n DNS panelinde bir <strong>A<\/strong> kayd\u0131 ekleyin: b\u00f6lgeniz <code>example.com<\/code> ise ad alan\u0131 genellikle <code>uygulama<\/code>, de\u011fer ise VPS&#8217;nin genel IPv4 adresidir. Mevcut kayd\u0131 de\u011fi\u015ftiriyorsan\u0131z \u00f6nce eski de\u011ferini kaydedin; geri d\u00f6n\u00fc\u015fte bunu kullanabilirsiniz. IPv6 adresini belirten <strong>AAAA<\/strong> kayd\u0131n\u0131 da kontrol edin; IPv6 yay\u0131n\u0131 kurmad\u0131ysan\u0131z ayn\u0131 ad alt\u0131nda yanl\u0131\u015f sunucuya giden bir kay\u0131t b\u0131rakmay\u0131n.<\/p>\n<p>DNS y\u00f6nlendirmesi tek ba\u015f\u0131na eri\u015fim izni vermez; HTTP ve HTTPS ba\u011flant\u0131lar\u0131n\u0131n g\u00fcvenlik duvar\u0131ndan da ge\u00e7mesi gerekir. VPS&#8217;de <strong>Windows Defender Firewall with Advanced Security &#8211; Inbound Rules &#8211; New Rule<\/strong> yolunu a\u00e7arak yeni bir gelen ba\u011flant\u0131 kural\u0131 olu\u015fturun. <strong>Port &#8211; TCP &#8211; Specific local ports<\/strong> se\u00e7ip belirli yerel portlar alan\u0131na <code>80,443<\/code> girin. <strong>Allow the connection<\/strong> (ba\u011flant\u0131ya izin ver) se\u00e7ene\u011fiyle sunucunun etkin a\u011f profilinde izin verin; kural\u0131 <code>OrnekWeb HTTP HTTPS<\/code> ad\u0131yla kaydedin. Sa\u011flay\u0131c\u0131 panelinde ayr\u0131ca a\u011f g\u00fcvenlik duvar\u0131 varsa ayn\u0131 gelen TCP portlar\u0131n\u0131 orada da a\u00e7\u0131n; Windows g\u00fcvenlik duvar\u0131n\u0131 kapatmay\u0131n.<\/p>\n<p>Geli\u015ftirici bilgisayar\u0131nda PowerShell&#8217;i a\u00e7\u0131n. Temsil\u00ee alan ad\u0131n\u0131 de\u011fi\u015ftirerek <code>Resolve-DnsName uygulama.example.com<\/code> ile adresi, ard\u0131ndan <code>Test-NetConnection uygulama.example.com -Port 80<\/code> ile eri\u015fimi kontrol edin. \u0130lk komutta VPS&#8217;nin genel IP adresini, ikinci komutta <strong>TcpTestSucceeded: True<\/strong> sonucunu g\u00f6rmelisiniz. Yanl\u0131\u015f IP g\u00f6r\u00fcn\u00fcyorsa DNS kayd\u0131n\u0131 ve \u00f6nbellekte eski yan\u0131t kal\u0131p kalmad\u0131\u011f\u0131n\u0131 inceleyin. IP do\u011fru ama ba\u011flant\u0131 ba\u015far\u0131s\u0131zsa \u00f6nce g\u00fcvenlik duvar\u0131 kurallar\u0131na ve IIS sitesinin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131na bak\u0131n.<\/p>\n<h3><span id=\"Sertifikayi_edinin_ve_HTTPS_baglamasini_dogrulayin\">Sertifikay\u0131 edinin ve HTTPS ba\u011flamas\u0131n\u0131 do\u011frulay\u0131n<\/span><\/h3>\n<p>HTTPS, taray\u0131c\u0131yla sunucu aras\u0131ndaki ba\u011flant\u0131y\u0131 \u015fifreler; bunun i\u00e7in alan ad\u0131n\u0131za ait g\u00fcvenilir bir sertifikay\u0131 IIS&#8217;e ba\u011flayacaks\u0131n\u0131z. Yeni sertifika i\u00e7in VPS&#8217;de IIS Manager&#8217;\u0131n sunucu d\u00fc\u011f\u00fcm\u00fcnden <strong>Server Certificates &#8211; Create Certificate Request<\/strong> (sunucu sertifikalar\u0131 &#8211; sertifika iste\u011fi olu\u015ftur) yolunu a\u00e7\u0131n. <strong>Common name<\/strong> alan\u0131na ger\u00e7ek alt alan ad\u0131n\u0131z\u0131, di\u011fer alanlara istenen kurum ve konum bilgilerini girin. Sa\u011flay\u0131c\u0131 olarak <strong>Microsoft RSA SChannel Cryptographic Provider<\/strong>, anahtar uzunlu\u011fu olarak <code>2048<\/code> se\u00e7in. Klas\u00f6r yoksa Dosya Gezgini&#8217;nde olu\u015fturup iste\u011fi <code>C:\\DeployBackups\\OrnekWeb.req<\/code> dosyas\u0131na kaydedin. Bu dosya CSR, yani sertifika imzalama iste\u011fidir.<\/p>\n<p>Olu\u015fan dosyay\u0131 Not Defteri ile a\u00e7\u0131p i\u00e7eri\u011finin tamam\u0131n\u0131 g\u00fcvenilir sertifika sa\u011flay\u0131c\u0131n\u0131z\u0131n sipari\u015f ekran\u0131ndaki CSR alan\u0131na yap\u0131\u015ft\u0131r\u0131n. Sipari\u015fte sertifikan\u0131n kapsayaca\u011f\u0131 alan ad\u0131n\u0131n ger\u00e7ek alt alan ad\u0131n\u0131z oldu\u011funu kontrol edin. DNS do\u011frulamas\u0131n\u0131 se\u00e7ip sa\u011flay\u0131c\u0131n\u0131n verdi\u011fi kay\u0131t t\u00fcr\u00fcn\u00fc, ad\u0131n\u0131 ve de\u011ferini DNS paneline aynen ekleyin. Sa\u011flay\u0131c\u0131n\u0131n ekran\u0131nda alan ad\u0131 do\u011frulamas\u0131 tamamland\u0131\u011f\u0131nda IIS i\u00e7in verilen sertifika dosyas\u0131n\u0131 indirin.<\/p>\n<p>VPS&#8217;de <strong>Server Certificates &#8211; Complete Certificate Request<\/strong> (sertifika iste\u011fini tamamla) ile indirdi\u011finiz dosyay\u0131 se\u00e7in; g\u00f6r\u00fcnen ad\u0131 <code>OrnekWeb TLS<\/code>, sertifika deposunu <code>Personal<\/code> yap\u0131n. Sa\u011flay\u0131c\u0131n\u0131n ara sertifikalar\u0131n\u0131 da talimat\u0131na g\u00f6re kurun; bunlar sertifikan\u0131z\u0131n g\u00fcvenilir bir k\u00f6k sertifikaya ba\u011flanmas\u0131n\u0131 sa\u011flar. \u0130ste\u011fi bu VPS&#8217;de olu\u015fturdu\u011funuz i\u00e7in sertifika buradaki \u00f6zel anahtarla e\u015fle\u015fir. \u0130\u015flem bitince sertifikay\u0131 Server Certificates listesinde g\u00f6rmelisiniz.<\/p>\n<p>Elinizde \u00f6zel anahtar\u0131 da i\u00e7eren bir <strong>PFX<\/strong> sertifika paketi varsa CSR olu\u015fturma ve tamamlama ad\u0131mlar\u0131na gerek yoktur. Ayn\u0131 ekranda <strong>Import<\/strong> (i\u00e7e aktar) \u00fczerinden PFX dosyas\u0131n\u0131 ve parolas\u0131n\u0131 girip <strong>Personal<\/strong> deposuna aktar\u0131n. PFX&#8217;i yay\u0131n klas\u00f6r\u00fcne koymay\u0131n; kurulumdan sonra aktar\u0131m kopyas\u0131n\u0131 kald\u0131r\u0131p g\u00fcvenli yede\u011fini koruyun.<\/p>\n<p>Sertifika listede g\u00f6r\u00fcnd\u00fc\u011f\u00fcnde <strong>Sites &#8211; OrnekWeb &#8211; Bindings &#8211; Add<\/strong> ekran\u0131n\u0131 a\u00e7\u0131n. <strong>Type<\/strong> de\u011ferini <code>https<\/code>, <strong>Port<\/strong> de\u011ferini <code>443<\/code>, <strong>Host name<\/strong> de\u011ferini kendi alt alan ad\u0131n\u0131z yap\u0131n. <strong>Require Server Name Indication<\/strong> se\u00e7ene\u011fini i\u015faretleyin; SNI, ayn\u0131 IP&#8217;de sertifikan\u0131n alan ad\u0131na g\u00f6re se\u00e7ilmesini sa\u011flar. <strong>SSL certificate<\/strong> (SSL sertifikas\u0131) listesinden sertifikan\u0131z\u0131 se\u00e7ip kaydedin. Ba\u011flamalar listesinde alan ad\u0131n\u0131z\u0131 ta\u015f\u0131yan HTTPS kayd\u0131 g\u00f6r\u00fcnmelidir.<\/p>\n<p>Geli\u015ftirici bilgisayar\u0131n\u0131z\u0131n taray\u0131c\u0131s\u0131nda alan ad\u0131n\u0131z\u0131 HTTPS ile a\u00e7\u0131n. Sertifika uyar\u0131s\u0131 olmadan OrnekWeb sayfas\u0131 g\u00f6r\u00fcnmeli; taray\u0131c\u0131n\u0131n sertifika ayr\u0131nt\u0131lar\u0131nda alan ad\u0131 e\u015fle\u015fmesi, ge\u00e7erlilik tarihleri ve g\u00fcven zinciri do\u011fru olmal\u0131d\u0131r. Uyar\u0131 g\u00f6r\u00fcrseniz IIS ba\u011flamas\u0131nda se\u00e7ti\u011finiz sertifikay\u0131, kapsad\u0131\u011f\u0131 alan ad\u0131n\u0131 ve ara sertifikalar\u0131 kontrol edip ayn\u0131 adresi yeniden a\u00e7\u0131n. Sertifika uyar\u0131s\u0131n\u0131 atlayarak yap\u0131lan kontrol\u00fc ba\u015far\u0131l\u0131 yay\u0131n saymay\u0131n.<\/p>\n<h2><span id=\"Baslangic_hatalarini_ayirt_edin_ve_guvenli_guncelleme_yapin\">Ba\u015flang\u0131\u00e7 hatalar\u0131n\u0131 ay\u0131rt edin ve g\u00fcvenli g\u00fcncelleme yap\u0131n<\/span><\/h2>\n<h3><span id=\"Hata_koduyla_sorunun_yerini_daraltin\">Hata koduyla sorunun yerini daralt\u0131n<\/span><\/h3>\n<p>Uygulama a\u00e7\u0131lm\u0131yorsa \u00f6nce VPS&#8217;de <strong>Event Viewer &#8211; Windows Logs &#8211; Application<\/strong> (Olay G\u00f6r\u00fcnt\u00fcleyicisi &#8211; Windows G\u00fcnl\u00fckleri &#8211; Uygulama) ekran\u0131n\u0131 a\u00e7\u0131n. \u0130ste\u011fi yeniden g\u00f6nderip o saatle e\u015fle\u015fen <code>IIS AspNetCore Module V2<\/code> kay\u0131tlar\u0131n\u0131 inceleyin. IIS g\u00fcnl\u00fcklerindeki <code>sc-status<\/code> ve <code>sc-substatus<\/code> alanlar\u0131 da ana HTTP kodunu ve alt kodunu g\u00f6sterir. G\u00fcnl\u00fck klas\u00f6r\u00fcn\u00fc bulmak i\u00e7in IIS Manager&#8217;da OrnekWeb sitesini se\u00e7ip <strong>Logging<\/strong> (g\u00fcnl\u00fck kayd\u0131) ekran\u0131ndaki <strong>Directory<\/strong> (klas\u00f6r) alan\u0131na bak\u0131n.<\/p>\n<figure class=\"aiw-figure\" data-aiw-visual-id=\"5994\" data-aiw-visual-key=\"20ebb747aa3d0093c419523ba68509bff5246f8beef794deecca80cc52c1ced2\"><img decoding=\"async\" src=\"https:\/\/www.dchost.com\/blog\/wp-content\/uploads\/2026\/11\/dchost-flow-tr-691b1fe99d6ef04d7164.png\" alt=\"Yedek alma, app_offline.htm ile durdurma, dosyalar\u0131 g\u00fcncelleme, HTTPS kontrol\u00fc ve gerekirse \u00f6nceki yay\u0131na d\u00f6nme s\u0131ras\u0131.\" width=\"840\" height=\"1305\" loading=\"lazy\" class=\"aiw-article-visual wp-image-5994\" srcset=\"https:\/\/www.dchost.com\/blog\/wp-content\/uploads\/2026\/11\/dchost-flow-tr-691b1fe99d6ef04d7164.png 840w, https:\/\/www.dchost.com\/blog\/wp-content\/uploads\/2026\/11\/dchost-flow-tr-691b1fe99d6ef04d7164-193x300.png 193w, https:\/\/www.dchost.com\/blog\/wp-content\/uploads\/2026\/11\/dchost-flow-tr-691b1fe99d6ef04d7164-659x1024.png 659w, https:\/\/www.dchost.com\/blog\/wp-content\/uploads\/2026\/11\/dchost-flow-tr-691b1fe99d6ef04d7164-768x1193.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><figcaption>Ak\u0131\u015f \u015femas\u0131: Ak\u0131\u015f, dosyalar\u0131 de\u011fi\u015ftirmeden \u00f6nce geri d\u00f6n\u00fc\u015f kopyas\u0131 almay\u0131, uygulamay\u0131 bak\u0131m sayfas\u0131yla durdurmay\u0131 ve kontrol ba\u015far\u0131s\u0131zsa \u00f6nceki yay\u0131na d\u00f6nmeyi a\u00e7\u0131klar.<\/figcaption><\/figure>\n<table>\n<thead>\n<tr>\n<th>Belirti<\/th>\n<th>Ay\u0131rt edici kontrol ve dar d\u00fczeltme<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>500.19<\/td>\n<td>VPS&#8217;den yapt\u0131\u011f\u0131n\u0131z iste\u011fin hata ayr\u0131nt\u0131s\u0131ndaki hata koduna ve yap\u0131land\u0131rma sat\u0131r\u0131na bak\u0131n. Bozuk XML varsa dosyan\u0131n kopyas\u0131n\u0131 yay\u0131n klas\u00f6r\u00fc d\u0131\u015f\u0131nda saklay\u0131p yaln\u0131z hatal\u0131 sat\u0131r\u0131 d\u00fczeltin; mod\u00fcl tan\u0131nm\u0131yorsa Hosting Bundle kurulumunu onar\u0131n. Eri\u015fim reddinde dosya izinlerini kontrol edin.<\/td>\n<\/tr>\n<tr>\n<td>500.30<\/td>\n<td>Uygulama ba\u015flat\u0131lamam\u0131\u015ft\u0131r. Application g\u00fcnl\u00fc\u011f\u00fcndeki istisnay\u0131, yani uygulaman\u0131n bildirdi\u011fi hatay\u0131 inceleyin. Kay\u0131tta belirtilen eksik ayar\u0131 veya ba\u015flang\u0131\u00e7 kodundaki hatay\u0131 d\u00fczeltin; yaln\u0131z bu koda bakarak farkl\u0131 \u00e7al\u0131\u015fma zamanlar\u0131 kurmay\u0131n.<\/td>\n<\/tr>\n<tr>\n<td>500.31<\/td>\n<td>VPS&#8217;de <code>dotnet --list-runtimes<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 <code>OrnekWeb.runtimeconfig.json<\/code> ile kar\u015f\u0131la\u015ft\u0131r\u0131n. Bu \u00f6rnekte x64 Microsoft.NETCore.App ve Microsoft.AspNetCore.App 10.0.x gerekir; eksikse uygun Hosting Bundle&#8217;\u0131 kurun.<\/td>\n<\/tr>\n<tr>\n<td>503<\/td>\n<td>IIS Manager &#8211; Application Pools alt\u0131nda OrnekWeb durumuna bak\u0131n. Durmu\u015fsa Event Viewer &#8211; Windows Logs &#8211; System ekran\u0131ndaki WAS, yani Windows \u0130\u015flem Etkinle\u015ftirme Hizmeti olaylar\u0131n\u0131 inceleyin. \u00c7\u00f6kme veya kimlik sorununu giderip havuzu ba\u015flat\u0131n. Tekrarl\u0131 \u00e7\u00f6kmelerde havuzu durduran Rapid-Fail Protection korumas\u0131n\u0131 kapatmay\u0131n.<\/td>\n<\/tr>\n<tr>\n<td>401.3 veya 403.14<\/td>\n<td>401.3 i\u00e7in <code>icacls C:\\Sites\\OrnekWeb<\/code> ile izinleri inceleyin; gereken kimli\u011fe yaln\u0131z okuma\/\u00e7al\u0131\u015ft\u0131rma verin. 403.14 i\u00e7in sitenin fiziksel yolunu ve yay\u0131n \u00e7\u0131kt\u0131s\u0131ndaki web.config dosyas\u0131n\u0131 kontrol edin. Dizin listelemeyi a\u00e7mak uygulaman\u0131n ba\u015flamas\u0131n\u0131 sa\u011flamaz ve dosya adlar\u0131n\u0131 a\u00e7\u0131\u011fa \u00e7\u0131karabilir.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Her d\u00fczeltmeden sonra ayn\u0131 adresi yeniden a\u00e7\u0131n ve yeni iste\u011fin saatiyle e\u015fle\u015fen hata kayd\u0131 olu\u015fup olu\u015fmad\u0131\u011f\u0131na bak\u0131n. Sayfan\u0131n y\u00fcklenmesiyle birlikte ilgili hatan\u0131n tekrarlanmad\u0131\u011f\u0131n\u0131 g\u00f6rmek, d\u00fczeltmenin i\u015fe yarad\u0131\u011f\u0131n\u0131 g\u00f6sterir. Ayarlar\u0131 tek tek de\u011fi\u015ftirmek as\u0131l nedeni takip etmenizi kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3><span id=\"Baslangic_gunlugunu_gecici_acin\">Ba\u015flang\u0131\u00e7 g\u00fcnl\u00fc\u011f\u00fcn\u00fc ge\u00e7ici a\u00e7\u0131n<\/span><\/h3>\n<p>Olay kayd\u0131 nedenini g\u00f6stermiyorsa uygulaman\u0131n ba\u015flang\u0131\u00e7 \u00e7\u0131kt\u0131s\u0131n\u0131 ge\u00e7ici olarak dosyaya yazd\u0131rabilirsiniz. \u00d6nce <code>web.config<\/code> dosyas\u0131n\u0131n kopyas\u0131n\u0131 yay\u0131n klas\u00f6r\u00fc d\u0131\u015f\u0131nda saklay\u0131n; d\u00fczenleme sorun \u00e7\u0131kar\u0131rsa bu kopyay\u0131 geri koyabilirsiniz. G\u00fcnl\u00fck klas\u00f6r\u00fcn\u00fc olu\u015fturmak ve yaln\u0131z bu klas\u00f6re yazma yetkisi vermek i\u00e7in VPS&#8217;de y\u00f6netici PowerShell penceresinde \u015fu komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">New-Item -ItemType Directory -Force C:\\Sites\\OrnekWeb\\logs | Out-Null\nicacls &quot;C:\\Sites\\OrnekWeb\\logs&quot; \/grant &quot;IIS AppPool\\OrnekWeb:(OI)(CI)M&quot;<\/code><\/pre>\n<p>Yay\u0131n klas\u00f6r\u00fcndeki web.config dosyas\u0131n\u0131 y\u00f6netici olarak a\u00e7t\u0131\u011f\u0131n\u0131z bir metin d\u00fczenleyicide a\u00e7\u0131n. Mevcut <code>aspNetCore<\/code> \u00f6\u011fesinde <code>stdoutLogEnabled=\"true\"<\/code> ve <code>stdoutLogFile=\".\\logs\\stdout\"<\/code> de\u011ferlerini ayarlay\u0131n; di\u011fer \u00f6znitelikleri koruyun. Dosyay\u0131 kaydedip iste\u011fi tekrarlay\u0131n, ard\u0131ndan logs klas\u00f6r\u00fcndeki yeni dosyay\u0131 okuyun. Bu kay\u0131t, ba\u015flang\u0131\u00e7ta olu\u015fan hatan\u0131n ayr\u0131nt\u0131s\u0131n\u0131 g\u00f6sterebilir. <strong>stdout<\/strong> standart \u00e7\u0131kt\u0131 anlam\u0131na gelir; bu g\u00fcnl\u00fckleme uygulaman\u0131n standart \u00e7\u0131kt\u0131 ve hata ak\u0131\u015flar\u0131n\u0131 dosyaya y\u00f6nlendirir. Dosyalar i\u00e7in otomatik boyut s\u0131n\u0131r\u0131 yoktur.<\/p>\n<p>Tan\u0131lama bitince g\u00fcnl\u00fckleme de\u011ferini <code>false<\/code> yap\u0131p dosyay\u0131 kaydedin. Uygulama bu klas\u00f6re yazm\u0131yorsa logs klas\u00f6r\u00fcn\u00fcn <strong>Properties &#8211; Security &#8211; Advanced<\/strong> (\u00d6zellikler &#8211; G\u00fcvenlik &#8211; Geli\u015fmi\u015f) ekran\u0131ndan OrnekWeb havuz kimli\u011fi i\u00e7in ekledi\u011finiz do\u011frudan Modify iznini kald\u0131r\u0131n; \u00fcst klas\u00f6rden gelen okuma\/\u00e7al\u0131\u015ft\u0131rma iznini koruyun. Yeni bir istekten sonra ba\u015flang\u0131\u00e7 g\u00fcnl\u00fc\u011f\u00fcn\u00fcn b\u00fcy\u00fcmedi\u011fini kontrol edin.<\/p>\n<p>G\u00fcnl\u00fcklerde parola veya ba\u011flant\u0131 bilgisi bulunabilece\u011finden dosyalar\u0131 a\u00e7\u0131k payla\u015fmay\u0131n. Ayarlar\u0131n g\u00fcvenli saklanmas\u0131 i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/vpste-env-ve-gizli-anahtar-yonetimi\/\">VPS&#039;te gizli anahtar y\u00f6netimi<\/a> yakla\u015f\u0131m\u0131n\u0131 izleyin. Hata ayr\u0131nt\u0131lar\u0131n\u0131 ziyaret\u00e7ilere a\u00e7mamak i\u00e7in Production ortam\u0131n\u0131 Development&#8217;a \u00e7evirmeyin.<\/p>\n<h3><span id=\"Guncellemeyi_geri_donus_kopyasiyla_yapin\">G\u00fcncellemeyi geri d\u00f6n\u00fc\u015f kopyas\u0131yla yap\u0131n<\/span><\/h3>\n<ol>\n<li><strong>Yedek al\u0131n:<\/strong> VPS&#8217;de Dosya Gezgini ile mevcut yay\u0131n klas\u00f6r\u00fcn\u00fcn i\u00e7eri\u011fini, \u00f6rne\u011fin <code>C:\\DeployBackups\\OrnekWeb\\surum-001<\/code> alt\u0131na kopyalay\u0131n. Yedek klas\u00f6r\u00fcn\u00fc a\u00e7\u0131p web.config dahil yay\u0131n dosyalar\u0131n\u0131n do\u011frudan bu klas\u00f6rde bulundu\u011funu kontrol edin. Bu \u00f6rnek uygulama kal\u0131c\u0131 veri yazmad\u0131\u011f\u0131ndan dosya kopyas\u0131 yeterlidir; veritaban\u0131 ge\u00e7i\u015fleri bu i\u015flemin kapsam\u0131nda de\u011fildir.<\/li>\n<li><strong>Uygulamay\u0131 durdurun:<\/strong> <code>C:\\Sites\\OrnekWeb\\app_offline.htm<\/code> dosyas\u0131na k\u0131sa bir bak\u0131m mesaj\u0131 yaz\u0131n. Not Defteri kullan\u0131yorsan\u0131z kaydederken dosya t\u00fcr\u00fcn\u00fc <strong>All Files<\/strong> (t\u00fcm dosyalar) se\u00e7in; dosya ad\u0131na .txt eklenmemeli. ASP.NET Core Module uygulamay\u0131 kapat\u0131r; taray\u0131c\u0131da sayfay\u0131 yenileyip bak\u0131m mesaj\u0131n\u0131 g\u00f6rd\u00fc\u011f\u00fcn\u00fcz\u00fc kontrol edin. Dosya kilidi s\u00fcrerse IIS Manager &#8211; Application Pools ekran\u0131ndan yaln\u0131z OrnekWeb havuzunu se\u00e7ip <strong>Stop<\/strong> (durdur) kullan\u0131n.<\/li>\n<li><strong>Dosyalar\u0131 de\u011fi\u015ftirin:<\/strong> app_offline.htm dosyas\u0131n\u0131 koruyarak eski yay\u0131n dosyalar\u0131n\u0131 kald\u0131r\u0131n ve geli\u015ftirici bilgisayar\u0131ndaki yeni Release \u00e7\u0131kt\u0131s\u0131n\u0131n tamam\u0131n\u0131 ayn\u0131 yay\u0131n klas\u00f6r\u00fcne kopyalay\u0131n. Sunucuya \u00f6zel ayarlar\u0131 yedekle kar\u015f\u0131la\u015ft\u0131r\u0131p gereken de\u011ferleri koruyun. Klas\u00f6r\u00fcn Properties &#8211; Security ekran\u0131nda havuz kimli\u011finin k\u00f6kten gelen okuma\/\u00e7al\u0131\u015ft\u0131rma izinlerinin yeni dosyalarda da bulundu\u011funu kontrol edin.<\/li>\n<li><strong>Kontrol edin veya geri d\u00f6n\u00fcn:<\/strong> Havuzu durdurduysan\u0131z ayn\u0131 ekranda <strong>Start<\/strong> (ba\u015flat) ile ba\u015flat\u0131n, ard\u0131ndan app_offline.htm dosyas\u0131n\u0131 kald\u0131r\u0131n. VPS d\u0131\u015f\u0131ndaki bilgisayar\u0131n\u0131zdan HTTPS \u00fczerinden ana sayfay\u0131 ve Privacy sayfas\u0131n\u0131 a\u00e7\u0131n. Ba\u015far\u0131s\u0131zsa bak\u0131m dosyas\u0131n\u0131 yeniden koyun; uygulama durduktan sonra bak\u0131m dosyas\u0131n\u0131 koruyarak yeni yay\u0131n dosyalar\u0131n\u0131 kald\u0131r\u0131p surum-001 i\u00e7eri\u011fini geri kopyalay\u0131n. Havuzu durdurman\u0131z gerektiyse yeniden ba\u015flat\u0131n. Bak\u0131m dosyas\u0131n\u0131 kald\u0131rarak ayn\u0131 sayfa kontrollerini tekrarlay\u0131n.<\/li>\n<\/ol>\n<p>Bu y\u00f6ntem k\u0131sa bir bak\u0131m kesintisi olu\u015fturur. Kesintiyi azaltman\u0131z gerekti\u011finde ayr\u0131 yay\u0131n klas\u00f6rleri aras\u0131nda ge\u00e7i\u015f tasarlanabilir; ancak dosya yolunu de\u011fi\u015ftirmek tek ba\u015f\u0131na yeterli de\u011fildir. \u00c7al\u0131\u015fan s\u00fcre\u00e7lerin ve uygulama durumunun da bu ge\u00e7i\u015fe uygun y\u00f6netilmesi gerekir.<\/p>\n<h2><span id=\"Sik_Sorulan_Sorular\">S\u0131k Sorulan Sorular<\/span><\/h2>\n<h3><span id=\"Windows_VPS8217ye_NET_SDK_kurmam_gerekiyor_mu\">Windows VPS&#8217;ye .NET SDK kurmam gerekiyor mu?<\/span><\/h3>\n<p>Hay\u0131r. <strong>SDK<\/strong>, uygulamay\u0131 geli\u015ftirmek ve derlemek i\u00e7in kullan\u0131lan ara\u00e7 paketidir; bu senaryoda geli\u015ftirici bilgisayar\u0131n\u0131zda bulunmas\u0131 yeterlidir. VPS&#8217;ye kaynak kod yerine yay\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 ta\u015f\u0131rs\u0131n\u0131z. Sunucuda ise Hosting Bundle&#8217;\u0131n sa\u011flad\u0131\u011f\u0131 uygun .NET \u00e7al\u0131\u015fma zaman\u0131 ve uygulamay\u0131 IIS&#8217;e ba\u011flayan mod\u00fcl gerekir. Sunucuda derleme yapmay\u0131 planlam\u0131yorsan\u0131z SDK kurman\u0131za gerek yoktur; SDK&#8217;n\u0131n kurulu olmas\u0131 da Hosting Bundle&#8217;\u0131n yerini tutmaz.<\/p>\n<h3><span id=\"Ayni_sunucuda_farkli_NET_surumleri_calisabilir_mi\">Ayn\u0131 sunucuda farkl\u0131 .NET s\u00fcr\u00fcmleri \u00e7al\u0131\u015fabilir mi?<\/span><\/h3>\n<p>Evet, farkl\u0131 ana s\u00fcr\u00fcmlerin \u00e7al\u0131\u015fma zamanlar\u0131 yan yana bulunabilir. \u00d6rne\u011fin .NET 8 ve .NET 10 hedefleyen iki uygulama, ihtiya\u00e7 duyduklar\u0131 \u00e7al\u0131\u015fma zamanlar\u0131 kuruluysa ayn\u0131 IIS sunucusunda \u00e7al\u0131\u015fabilir. Her uygulamaya ayr\u0131 uygulama havuzu ay\u0131r\u0131n. \u00d6rnekteki <strong>in-process<\/strong>, yani uygulaman\u0131n IIS i\u015f\u00e7i i\u015flemi i\u00e7inde \u00e7al\u0131\u015ft\u0131\u011f\u0131 modelde, birden fazla uygulamay\u0131 ayn\u0131 havuzda \u00e7al\u0131\u015ft\u0131rmak desteklenmez.<\/p>\n<p>Bir \u00e7al\u0131\u015fma zaman\u0131n\u0131 kald\u0131rmadan \u00f6nce uygulamalar\u0131n <code>runtimeconfig.json<\/code> dosyalar\u0131ndaki gereksinimleri kontrol edin. Yeni ana s\u00fcr\u00fcm\u00fc kurmak, eski s\u00fcr\u00fcm\u00fc hedefleyen uygulamay\u0131 kendili\u011finden y\u00fckseltmez; eski \u00e7al\u0131\u015fma zaman\u0131na h\u00e2l\u00e2 ihtiya\u00e7 olabilir.<\/p>\n<h3><span id=\"Sunucu_yeniden_baslayinca_kullanicilarin_oturumu_kapanir_mi\">Sunucu yeniden ba\u015flay\u0131nca kullan\u0131c\u0131lar\u0131n oturumu kapan\u0131r m\u0131?<\/span><\/h3>\n<p>Her zaman de\u011fil. Kimlik do\u011frulama \u00e7erezlerinin yeniden okunabilmesi, <strong>Data Protection<\/strong> adl\u0131 veri koruma sisteminin anahtarlar\u0131n\u0131n korunmas\u0131na ve uygulaman\u0131n bunlara eri\u015febilmesine ba\u011fl\u0131d\u0131r. Anahtarlar yaln\u0131z bellekte tutuluyorsa yeniden ba\u015flatma sonras\u0131nda kullan\u0131c\u0131lar\u0131n tekrar giri\u015f yapmas\u0131 gerekebilir.<\/p>\n<p>Giri\u015f \u00f6zelli\u011fi ekledi\u011finizde anahtarlar\u0131n nerede sakland\u0131\u011f\u0131n\u0131 kontrol edin. Dosya tabanl\u0131 kal\u0131c\u0131 bir depo se\u00e7erseniz bunu yay\u0131n klas\u00f6r\u00fcn\u00fcn d\u0131\u015f\u0131nda tutun; b\u00f6ylece g\u00fcncellemede yay\u0131n dosyalar\u0131n\u0131 de\u011fi\u015ftirirken anahtarlar\u0131 silmezsiniz. Eri\u015fimi uygulama kimli\u011fi ve gerekli y\u00f6netici hesaplar\u0131yla s\u0131n\u0131rland\u0131r\u0131n. Anahtarlar\u0131 diskte \u015fifrelemek i\u00e7in Windows&#8217;un veri koruma mekanizmas\u0131 olan DPAPI gibi bir y\u00f6ntem kullan\u0131n.<\/p>\n<p>Anahtarlar\u0131 yedekleme plan\u0131na dahil edin; \u015fifreli yede\u011fin geri y\u00fcklenen ortamda a\u00e7\u0131labilmesi gerekti\u011fini de hesaba kat\u0131n. Bak\u0131m aral\u0131\u011f\u0131nda uygulamaya giri\u015f yap\u0131p havuzu yeniden ba\u015flat\u0131n, ard\u0131ndan ayn\u0131 taray\u0131c\u0131da oturumun s\u00fcrd\u00fc\u011f\u00fcn\u00fc kontrol edin. Bellekte saklanan <strong>Session<\/strong>, yani sunucu taraf\u0131ndaki oturum verisi ise kimlik do\u011frulama \u00e7erezi ge\u00e7erli kalsa bile yeniden ba\u015flatmada kaybolabilir.<\/p>\n<h3><span id=\"Surekli_arka_plan_islerini_IIS_uygulamasinda_calistirabilir_miyim\">S\u00fcrekli arka plan i\u015flerini IIS uygulamas\u0131nda \u00e7al\u0131\u015ft\u0131rabilir miyim?<\/span><\/h3>\n<p>\u00c7al\u0131\u015ft\u0131rabilirsiniz; ancak IIS uygulamas\u0131n\u0131n s\u00fcrekli \u00e7al\u0131\u015faca\u011f\u0131na g\u00fcvenemezsiniz. Havuzun yeniden ba\u015flat\u0131lmas\u0131, bo\u015fta kalmas\u0131 nedeniyle durdurulmas\u0131 veya yay\u0131n g\u00fcncellemesi, <code>BackgroundService<\/code> ile ba\u015flatt\u0131\u011f\u0131n\u0131z i\u015fi durdurabilir. <strong>AlwaysRunning<\/strong> (havuzun otomatik ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flayan \u00e7al\u0131\u015fma modu) ayar\u0131 da bu kesintileri tamamen engellemez.<\/p>\n<p>Kuyruktaki i\u015fleri s\u00fcrekli i\u015fleyen veya uzun s\u00fcren g\u00f6revler i\u00e7in ayr\u0131 bir <strong>.NET Worker Service<\/strong>, yani arka plan uygulamas\u0131 olu\u015fturup Windows hizmeti olarak \u00e7al\u0131\u015ft\u0131rman\u0131z daha uygundur. Belirli saatlerde ba\u015flay\u0131p biten i\u015fler i\u00e7in Windows G\u00f6rev Zamanlay\u0131c\u0131 kullan\u0131labilir. Her iki y\u00f6ntemde de i\u015fin ilerlemesini kal\u0131c\u0131 olarak kaydedin ve yeniden denemenin ayn\u0131 i\u015flemi yanl\u0131\u015fl\u0131kla iki kez yapmas\u0131n\u0131 \u00f6nleyecek \u015fekilde tasarlay\u0131n.<\/p>\n<h2><span id=\"Yayina_cikmadan_once_son_kontrol_listesi\">Yay\u0131na \u00e7\u0131kmadan \u00f6nce son kontrol listesi<\/span><\/h2>\n<p>Ana sayfan\u0131n a\u00e7\u0131lmas\u0131, uygulaman\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir; tek ba\u015f\u0131na yay\u0131n\u0131n haz\u0131r oldu\u011fu anlam\u0131na gelmez. A\u015fa\u011f\u0131daki listeyle uygulaman\u0131n do\u011fru kimlikle \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, d\u0131\u015far\u0131dan g\u00fcvenli eri\u015fildi\u011fini ve g\u00fcncelleme sorununda \u00f6nceki s\u00fcr\u00fcme d\u00f6nebilece\u011finizi kontrol edin.<\/p>\n<ul>\n<li><strong>\u00c7al\u0131\u015fma zaman\u0131 mevcut:<\/strong> VPS&#8217;de PowerShell \u00fczerinden <code>dotnet --list-runtimes<\/code> \u00e7al\u0131\u015ft\u0131r\u0131n. Bu \u00f6rnek i\u00e7in <code>Microsoft.NETCore.App<\/code> ve <code>Microsoft.AspNetCore.App<\/code> sat\u0131rlar\u0131nda 10.0.x s\u00fcr\u00fcmlerini g\u00f6rmelisiniz; x, kurulu bak\u0131m s\u00fcr\u00fcm\u00fcn\u00fc belirtir. IIS Manager&#8217;\u0131n sunucu d\u00fczeyindeki <strong>Modules<\/strong> (mod\u00fcller) ekran\u0131nda <code>AspNetCoreModuleV2<\/code> de bulunmal\u0131.<\/li>\n<li><strong>Havuz do\u011fru kimlikle \u00e7al\u0131\u015f\u0131yor:<\/strong> IIS Manager &#8211; Application Pools &#8211; OrnekWeb &#8211; Advanced Settings ekran\u0131n\u0131 a\u00e7\u0131n. <strong>Identity<\/strong> (\u00e7al\u0131\u015ft\u0131rma kimli\u011fi) de\u011feri <code>ApplicationPoolIdentity<\/code>, <strong>.NET CLR Version<\/strong> de\u011feri <code>No Managed Code<\/code> ve <strong>Enable 32-Bit Applications<\/strong> (32 bit uygulamalara izin ver) de\u011feri <code>False<\/code> olmal\u0131. Ard\u0131ndan Sites &#8211; OrnekWeb &#8211; Basic Settings (temel ayarlar) alt\u0131nda sitenin OrnekWeb havuzuna ba\u011fl\u0131 oldu\u011funu kontrol edin.<\/li>\n<li><strong>Klas\u00f6r yetkileri s\u0131n\u0131rl\u0131:<\/strong> PowerShell&#8217;de <code>icacls C:\\Sites\\OrnekWeb<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 inceleyin. <code>IIS AppPool\\OrnekWeb<\/code> kimli\u011fi yay\u0131n klas\u00f6r\u00fcn\u00fcn k\u00f6k\u00fcnde okuma ve \u00e7al\u0131\u015ft\u0131rma yetkisine sahip olmal\u0131; ba\u015fka gruplar \u00fczerinden yazma izni almamal\u0131. Ge\u00e7ici tan\u0131lama i\u00e7in logs klas\u00f6r\u00fcne ekledi\u011finiz yazma izninin, art\u0131k gerekmiyorsa kald\u0131r\u0131ld\u0131\u011f\u0131n\u0131 da kontrol edin.<\/li>\n<li><strong>HTTPS d\u0131\u015far\u0131dan \u00e7al\u0131\u015f\u0131yor:<\/strong> VPS d\u0131\u015f\u0131ndaki bilgisayar\u0131n\u0131zdan kendi alan ad\u0131n\u0131z\u0131 HTTPS ile a\u00e7\u0131n. Ana sayfa ve Privacy sayfas\u0131 sertifika uyar\u0131s\u0131 olmadan y\u00fcklenmeli. Taray\u0131c\u0131daki sertifika bilgilerinde alan ad\u0131 e\u015fle\u015fmesini ve ge\u00e7erlilik tarihlerini kontrol edin. Bu deneme, sunucu i\u00e7indeki kontrolden farkl\u0131 olarak d\u0131\u015f eri\u015fimi de s\u0131nar.<\/li>\n<li><strong>Ge\u00e7ici tan\u0131lama kapal\u0131:<\/strong> Yay\u0131ndaki <code>web.config<\/code> dosyas\u0131nda <code>stdoutLogEnabled=\"false\"<\/code> oldu\u011funu kontrol edin. Uygulaman\u0131n <code>Production<\/code> (\u00fcretim) ortam\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan da emin olun; ge\u00e7ici hata incelemesinden kalm\u0131\u015f bir Development ortam ayar\u0131 bulunmamal\u0131. Ba\u015flang\u0131\u00e7 tan\u0131lamas\u0131n\u0131 kapat\u0131rken normal IIS eri\u015fim g\u00fcnl\u00fcklerini ve uygulaman\u0131n hata kay\u0131tlar\u0131n\u0131 a\u00e7\u0131k b\u0131rak\u0131n.<\/li>\n<li><strong>Geri d\u00f6n\u00fc\u015f kopyas\u0131 haz\u0131r:<\/strong> Dosya Gezgini&#8217;nde <code>C:\\DeployBackups\\OrnekWeb<\/code> alt\u0131ndaki \u00f6nceki s\u00fcr\u00fcm klas\u00f6r\u00fcn\u00fc a\u00e7\u0131n; yay\u0131n dosyalar\u0131yla sunucuya \u00f6zel ayarlar\u0131n bulundu\u011funu kontrol edin. Canl\u0131 yay\u0131n klas\u00f6r\u00fcnde <code>app_offline.htm<\/code> kalmamal\u0131. Gerekti\u011finde h\u0131zla ula\u015fabilmek i\u00e7in geri d\u00f6n\u00fc\u015f ad\u0131mlar\u0131n\u0131 ve kullan\u0131lacak s\u00fcr\u00fcm\u00fcn klas\u00f6r yolunu kaydedin.<\/li>\n<\/ul>\n<p><strong>Bir sonraki ad\u0131m\u0131n\u0131z izleme ve sertifika yenilemesi olsun.<\/strong> D\u0131\u015far\u0131dan HTTPS eri\u015fimini ve beklenen sayfa i\u00e7eri\u011fini izleyen bir kontrol kurun; deneme bildirimi g\u00f6ndererek uyar\u0131lar\u0131n size ula\u015ft\u0131\u011f\u0131n\u0131 kontrol edin. Sertifikan\u0131n yenilenmesinden kimin sorumlu oldu\u011funu ve yenileme takvimini belirleyin. Otomatik yenileme kullan\u0131yorsan\u0131z yeni sertifikan\u0131n IIS ba\u011flamas\u0131na da uyguland\u0131\u011f\u0131n\u0131 kontrol edin. B\u00f6ylece ilk yay\u0131ndan sonra eri\u015fim sorunlar\u0131n\u0131 ve sertifika bak\u0131m\u0131n\u0131 da takip edebilirsiniz.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>ASP.NET Core uygulaman\u0131z\u0131 Windows VPS \u00fczerinde yay\u0131na almak i\u00e7in IIS ve Hosting Bundle kurulumundan ba\u015flay\u0131n. \u00d6rnek bir Razor Pages projesiyle yay\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131, uygulama havuzunu, klas\u00f6r yetkilerini ve HTTPS ba\u011flant\u0131s\u0131n\u0131 ayarlay\u0131n; ba\u015flang\u0131\u00e7 hatalar\u0131n\u0131 ay\u0131rt edip geri d\u00f6n\u00fc\u015f\u00fc olan bir g\u00fcncelleme yolu olu\u015fturun.<\/p>\n","protected":false},"author":4,"featured_media":5988,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[696,693,695,216,694,692],"class_list":["post-5996","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nasil-yapilir","tag-net-10","tag-asp-net-core","tag-hosting-bundle","tag-https","tag-iis","tag-windows-vps"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/5996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=5996"}],"version-history":[{"count":1,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/5996\/revisions"}],"predecessor-version":[{"id":6002,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/5996\/revisions\/6002"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/5988"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=5996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=5996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=5996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}