Aracılığıyla paylaş


SYSLIB0057: İkili ve dosya içeriği için X509Certificate2 ve X509Certificate oluşturucuları kullanımdan kaldırıldı

üzerinde X509Certificate bulunan ve X509Certificate2 içeriği bir byte[], ReadOnlySpan<byte>veya string dosya yolu olarak kabul eden oluşturucular , .NET 9'dan başlayarak kullanımdan kaldırılmış durumdadır. Import X509Certificate2Collection üzerindeki yöntemler de eskidir. Bunları kodda çağırmak, derleme zamanında uyarı SYSLIB0057 oluşturur.

Kullanımdan kaldırılmış olma nedeni

Etkilenen API'ler sertifikaların birden çok biçimde yüklenmesini destekliyor. Örneğin, new X509Certificate2(data) adlı byte[]bir sertifikadan data bir sertifika yükledi. data X.509, PKCS7 veya PKCS12/PFX gibi desteklenen biçimlerden biri olabilir.

Bu yöntemin kullanımı kolay olsa da, kullanıcı tarafından sağlanan verilerin istenenden farklı bir biçimde geçirildiği sorunlar oluşturdu. Bu, yalnızca X.509 içeriğinin yüklenmesi amaçlanan PKCS12'nin yüklenmesine izin verebilir. Ya da verilerin farklı şekillerde işlenmesinden birlikte çalışabilirlik sorunları oluşturabilir.

Geçici çözüm

Hedeflenen içerik türüne bağlı olarak sertifika içeriğini yüklemek için farklı bir API kullanın.

adlı X509CertificateLoader yeni bir sınıf, X.509 veya PKCS12 içeriğini yüklemek için kullanılabilir:

  • X.509 içeriğini yüklüyorsanız veya X509CertificateLoader.LoadCertificatekullanınX509CertificateLoader.LoadCertificateFromFile.
  • PKCS12 içeriğini yüklüyorsanız , , X509CertificateLoader.LoadPkcs12X509CertificateLoader.LoadPkcs12FromFileveya X509CertificateLoader.LoadPkcs12CollectionkullanınX509CertificateLoader.LoadPkcs12CollectionFromFile.
  • PKCS7 içeriği yüklüyorsanız, PKCS7 içeriğindeki sertifikaları incelemek için System.Security.Cryptography.Pkcs paketinden kullanın SignedCms .
  • Yüklemekte olduğunuz içerik türünden emin değilseniz, içerik türünü belirlemek ve uygun API'yi çağırmak için kullanın GetCertContentType .

.NET Framework ve .NET Standard için Microsoft.Bcl.Cryptography paketi kaynaklarıX509CertificateLoader.

Uyarıyı gizleme

Eski API'leri kullanmanız gerekiyorsa, uyarıyı kodda veya proje dosyanızda gizleyebilirsiniz.

Yalnızca tek bir ihlali engellemek için, önişlemci yönergelerini kaynak dosyanıza ekleyerek uyarıyı devre dışı bırakın ve sonra yeniden etkinleştirin.

// Disable the warning.
#pragma warning disable SYSLIB0057

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0057

Projenizdeki tüm SYSLIB0057 uyarıları engellemek için proje dosyanıza bir <NoWarn> özellik ekleyin.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0057</NoWarn>
  </PropertyGroup>
</Project>

Daha fazla bilgi için bkz . Uyarıları gizleme.