Swashbuckle.AspNetCore ve Swashbuckle.AspNetCore.Swagger paketlerini 10.0.1 sürümüne yükselttiğinizde aşağıdaki hatayla karşılaşabilirsiniz:
The type or namespace name 'OpenApiReference' could not be found
Sorun Nedir?
Swashbuckle 10.0+ sürümünde OpenApiReference sınıfı tamamen kaldırılmıştır. Bu breaking change, eski kodların derlenmesini engellemektedir.
Eğer projenizde güvenlik şeması tanımlarken aşağıdaki gibi bir yapı kullanıyorsanız, bu kod artık çalışmayacaktır:
// ❌ Bu kod Swashbuckle 10.0+ ile ÇALIŞMAZ
c.AddSecurityRequirement(
new OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference // <- Bu sınıf kaldırıldı!
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
},
new string[] { }
}
});Çözüm
Swashbuckle 10.0+ ile birlikte OpenApiSecuritySchemeReference adında yeni bir constructor-based yaklaşım getirilmiştir. Kodunuzu aşağıdaki gibi güncellemeniz gerekmektedir:
// ✅ Swashbuckle 10.0+ için doğru kullanım
c.AddSecurityRequirement(
new OpenApiSecurityRequirement
{
{
new OpenApiSecuritySchemeReference("Bearer"),
new string[] { }
}
});Geçiş Adımları
Adım 1: Mevcut Kodunuzu Bulun
Program.cs veya Swagger extension dosyalarınızda OpenApiReference kullanımlarını arayın.
Adım 2: Yeni Yapıya Geçin
OpenApiReference kullanan tüm güvenlik şeması tanımlarını OpenApiSecuritySchemeReference constructor'ı ile değiştirin.
Adım 3: Test Edin
Uygulamanızı çalıştırın ve Swagger UI'ın doğru yüklendiğinden ve yetkilendirme kilit simgesinin göründüğünden emin olun.
Sonuç
Bu değişiklik, Swashbuckle'ın OpenAPI 3.1 standartlarına daha uyumlu hale gelmesi için yapılmıştır. Yeni yaklaşım daha temiz ve anlaşılır bir API sunmaktadır.