# Windows hostingde ASP.NET ve IIS hatalarını düzeltin

> Windows hostingde ASP.NET hatalarının nedenini bulun: 500.xx alt kodunu okuyun, ASP.NET Core stdout kaydını açın, web.config ve SQL Server hatalarını düzeltin.

Zorluk: Orta

Windows hostingde siteniz **IIS** üzerinde çalışır. Bir istek başarısız olduğunda IIS, noktadan sonra bir **alt kod** taşıyan bir HTTP durumu gösterir; örneğin **500.19** veya **500.30**. Bu alt kod nereye bakacağınızı söyler. Bu rehber en sık karşılaşılan kodları ve ayrıntıların nasıl okunacağını anlatır.

## 1. adım: Tam kodu not alın

Hatalı sayfayı açın ve tam kodu ve varsa HRESULT değerini (örneğin `0x8007000d`) not alın. Ardından ayrıntıları görünür hale getirin:

**ASP.NET Core**

1. `httpdocs` içinde `logs` adlı bir klasör oluşturun.
2. `web.config` içinde `aspNetCore` öğesinde `stdoutLogEnabled="true"` ve `stdoutLogFile=".\logs\stdout"` değerlerini ayarlayın:

```xml
<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="true"
      stdoutLogFile=".\logs\stdout" />
```

3. Sayfayı yeniden yükleyin ve `logs` içindeki en yeni `stdout_….log` dosyasını açın.
4. İşiniz bitince `stdoutLogEnabled="false"` değerini yeniden ayarlayın.
**ASP.NET (.NET Framework)**

ASP.NET'in tam hatayı göstermesi için özel hataları kısa süreliğine kapatın. Plesk'te alan adının **ASP.NET Settings** bölümünü kullanın veya bunu `web.config` içinde ayarlayın:

```xml
<system.web>
  <customErrors mode="Off" />
</system.web>
```

Mesajı alır almaz değeri yeniden `RemoteOnly` veya `On` yapın: ayrıntılar herkese görünür.

> **Uyarı**
>
> stdout kaydının dosya boyutu veya dosya sayısı için sınırı yoktur. Açık bırakmak disk alanınızı doldurabilir ve siteyi durdurabilir.

## 500.19: yapılandırma verisi geçersiz

IIS `web.config` dosyasını okuyamıyor. HRESULT nedeni gösterir:

| HRESULT | Neden | Çözüm |
|---|---|---|
| `0x8007000d` | Bozuk XML veya sunucuda olmayan bir modüle ait bölüm (ASP.NET Core için: sürümünüzün hosting paketi) | Hatada belirtilen satırı kontrol edin; gerekmeyen bölümleri kaldırın; .NET sürümünü bize sorun |
| `0x80070021` | Bölüm sunucu düzeyinde kilitli ve `web.config` içinde ayarlanamıyor | O bölümü `web.config` dosyasından kaldırın veya ayarın sizin için değiştirilip değiştirilemeyeceğini bize sorun |
| `0x800700b7` | Daha üst düzeyde zaten tanımlı bir ayar için yinelenen giriş | Yinelenen girişi `web.config` dosyanızdan kaldırın |
| `0x80070003` | IIS sitenin yolundaki yapılandırma dosyasını okuyamıyor | `web.config` dosyasının `httpdocs` içinde olduğundan emin olun |

## 500.30, 500.31 ve 502.5: uygulama başlamıyor (ASP.NET Core)

- **500.31 Failed to Find Native Dependencies:** uygulamanızın hedeflediği .NET çalışma zamanı sunucuda kurulu değil. Sunucuda bulunan bir sürümü hedefleyin veya self-contained yayımlayın. Hangi sürümlerin bulunduğunu bize sorun.
- **500.30 In-Process Startup Failure:** uygulama başlarken hata veriyor. stdout kaydı istisnayı gösterir; çoğu zaman eksik bir ayar veya başlangıçta başarısız olan bir veritabanı bağlantısıdır.
- **502.5 Process Failure:** uygulamanın işlemi başlamıyor; çoğu zaman 500.31 ile aynı nedenle.
- **500.32 Failed to Load dll:** uygulama farklı bir işlemci mimarisi için yayımlandı (örneğin 64 bite karşı 32 bit). Çalışma zamanı tanımlayıcısı olmadan, framework-dependent olarak yeniden yayımlayın.

## 403.14 Forbidden: klasör listeleme reddedildi

IIS ne bir uygulama ne de bir varsayılan sayfa buldu. Genellikle yayın eksiktir: dosyalar yanlış klasördedir, bazıları kopyalanmamıştır veya `web.config` eksiktir. Yayımlama çıktısının tamamını `httpdocs` içine yükleyin.

## SQL Server: "The certificate chain was issued by an authority that is not trusted"

`Microsoft.Data.SqlClient` 4.0'dan beri bağlantılar varsayılan olarak şifrelenir ve sürücü sunucunun sertifikasını denetler. Uygulamanız sertifikayı doğrulayamazsa bağlantı bu mesajla başarısız olur.

- Sunucunuz için önerilen bağlantı ayarlarını bir destek talebiyle bize sorun.
- Şifreli ama sertifikayı denetlemeden bağlanmak için bağlantı dizesine `TrustServerCertificate=True` ekleyin. Microsoft bunun bağlantıyı araya girme saldırılarına açık bıraktığını belirtir; bunu geçici bir adım olarak görün.

**Login failed for user.** Bağlantı dizesindeki kullanıcı adı veya şifre Plesk'teki veritabanı kullanıcısıyla eşleşmiyor ya da kullanıcı o veritabanına atanmamış. Plesk'te kullanıcı için yeni bir şifre belirleyin ve bağlantı dizesini güncelleyin.

## Sonraki adımlar

- Yeniden yayınlama: [Plesk ile ASP.NET sitesi yayınlama](/guides/deploy-aspnet-plesk).
- Her sürümden önce: [hosting hesabınızı yedekleme ve geri yükleme](/guides/hosting-backup-restore).

## Sık sorulan sorular

### Neden yalnızca genel bir hata sayfası görüyorum?

IIS ve ASP.NET hata ayrıntılarını ziyaretçilerden bilerek gizler. Gerçek mesajı görmek için stdout kaydını (ASP.NET Core) kullanın veya özel hataları kısa süreliğine kapatın (ASP.NET).

### Uygulama bilgisayarımda çalışıyor ama hostingde çalışmıyor. Neden?

Çoğu zaman sunucudaki .NET sürümü hedeflediğinizden farklıdır, bağlantı dizesi gibi bir ayar hâlâ bilgisayarınızı gösterir ya da yüklemede bir dosya eksiktir.

### Windows olay günlüğünü veya IIS Manager'ı görebilir miyim?

Paylaşımlı Windows hostingde hayır; sunucuyu biz yönetiriz. Plesk, sitenizin web sunucusu kayıtlarını Logs altında gösterir. Daha fazlası için başarısız isteğin saatini ve adresini bir destek talebiyle bize gönderin.

### stdout kaydını açık bırakabilir miyim?

Hayır. Microsoft, kaydın boyut sınırı olmadığını ve diski doldurabileceğini belirtir. Bir sorunu bulmak için açın, ardından yeniden kapatın.

---

Kaynak: <https://hyperdc.com/tr/guides/products/aspnet-iis-errors>\
Son güncelleme: 2026-10-15
