ASP.NET Core hattı
Kestrel, host ve Program.cs
Uygulama nasıl ayağa kalkar: yapılandırma, servis kaydı ve sunucunun dinlemeye başlaması.
Kavramı anlayalım
Bir ASP.NET Core uygulaması Program.cs’de iki aşamada kurulur. Önce builder aşaması: yapılandırma kaynakları (appsettings.json, ortam değişkenleri, user-secrets) okunur ve servisler bağımlılık enjeksiyonu kapsayıcısına kaydedilir. Sonra builder.Build() ile uygulama oluşturulur ve middleware hattı sırayla tanımlanır. app.Run() çağrısıyla Kestrel portu dinlemeye başlar.
Kestrel, ASP.NET Core’un yerleşik, çapraz platform HTTP sunucusudur. Gelen baytları HTTP isteğine çevirir, her istek için bir HttpContext oluşturur ve onu hattın başına verir. Doğrudan internete açılabilir ama üretimde çoğunlukla bir ters vekilin arkasında çalışır.
Yapılandırma katmanlıdır: sonra eklenen kaynak öncekini ezer. Bu sayede appsettings.json’daki geliştirme bağlantı dizesi, üretimde ConnectionStrings__Portfolio ortam değişkeniyle değiştirilir. Gizli değerler hiçbir zaman koda veya depoya yazılmaz; bu projede geliştirmede user-secrets, üretimde ortam değişkenleri kullanılır.
Uygulamanın nasıl başladığını bilmek, yapılandırma ve ortam farklarından doğan hataları çözmeyi kolaylaştırır.
Üretim bağlantı dizesini veya JWT anahtarını appsettings.json’a yazıp depoya göndermek.
Aynı konu. Üç farklı derinlik.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.MapControllers();
app.Run();En küçük çalışan API: servis kaydı, uygulama, endpoint eşleme, dinleme.
Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.
Önce kendin dene.
Uygulama yerelde çalışıyor ama sunucuda ‘Jwt:Key bulunamadı’ hatasıyla açılmıyor. Yerelde değer user-secrets’te. Sunucuda ne eksik?
Çözümü ve açıklamasını göster
user-secrets yalnız Development ortamında ve yalnız o kullanıcı profilinde okunur.
Sunucuya ortam değişkeni eklenmeli: Jwt__Key=<değer>user-secrets bir üretim mekanizması değildir; üretimde değer başka bir yapılandırma kaynağından gelmelidir.