Freigeben über


System.Security.Cryptography-APIs werden auf Blazor WebAssembly nicht unterstützt

System.Security.Cryptography-APIs lösen zur Laufzeit eine PlatformNotSupportedException aus, wenn sie in einem Browser ausgeführt werden.

Änderungsbeschreibung

In früheren .NET-Versionen sind die meisten APIs System.Security.Cryptography für Blazor WebAssembly-Apps nicht verfügbar. Ab .NET 5 zielen Blazor WebAssembly-Apps auf den vollständigen .NET 5-API-Oberflächenbereich ab, jedoch werden nicht alle .NET 5-APIs aufgrund von Browser-Sandkasteneinschränkungen unterstützt. In .NET 5 und höheren Versionen werfen die nicht unterstützten System.Security.Cryptography APIs beim Ausführen auf WebAssembly ein PlatformNotSupportedException.

Tipp

Die Plattformkompatibilitätsanalyse kennzeichnet alle Aufrufe der betroffenen APIs, wenn Sie ein Projekt erstellen, das die Browserplattform unterstützt. Dieser Analyzer wird standardmäßig in .NET 5- und höher-Apps ausgeführt.

Grund für Änderung

Microsoft kann OpenSSL nicht als Abhängigkeit in der Blazor WebAssembly-Konfiguration versenden. Wir haben versucht, dieses Problem zu umgehen, indem wir eine Integration in die API SubtleCrypto des Browsers vorgenommen haben. Leider erforderte es erhebliche API-Änderungen, die es zu schwierig gemacht haben, zu integrieren.

Eingeführte Version

5.0

Zurzeit gibt es keine gute Möglichkeit, dieses Problem zu umgehen.

Betroffene APIs

Alle System.Security.Cryptography APIs mit Ausnahme der folgenden:

  • System.Security.Cryptography.RandomNumberGenerator
  • System.Security.Cryptography.IncrementalHash
  • System.Security.Cryptography.SHA1
  • System.Security.Cryptography.SHA256
  • System.Security.Cryptography.SHA384
  • System.Security.Cryptography.SHA512
  • System.Security.Cryptography.SHA1Managed
  • System.Security.Cryptography.SHA256Managed
  • System.Security.Cryptography.SHA384Managed
  • System.Security.Cryptography.SHA512Managed