System.Security.Cryptography-APIs werden in 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 Versionen von .NET waren die meisten System.Security.Cryptography-APIs für Blazor WebAssembly-Apps nicht verfügbar. Ab .NET 5 sind Blazor WebAssembly-Apps zwar auf die gesamte API-Oberfläche für .NET 5 ausgerichtet, aber aufgrund von Browsereinschränkungen der Sandbox werden nicht alle .NET 5-APIs unterstützt. In .NET 5 und höheren Versionen lösen die nicht unterstützten System.Security.Cryptography-APIs eine PlatformNotSupportedException aus, wenn sie in WebAssembly ausgeführt werden.

Tipp

Wenn Sie ein Projekt erstellen, das die Browserplattform unterstützt, kennzeichnet das Analysetool für die Plattformkompatibilität sämtliche Aufrufe der betroffenen APIs. Dieses Analysetool wird standardmäßig in Apps für .NET 5 und höher ausgeführt.

Grund für die Änderung

Microsoft kann OpenSSL nicht als Abhängigkeit mit der Blazor WebAssembly-Konfiguration integrieren. Wir haben versucht, dieses Problem zu umgehen, indem wir eine Integration in die API SubtleCrypto des Browsers vorgenommen haben. Leider waren dafür aber einschlägige API-Änderungen erforderlich, die die Integration zu kompliziert machten.

Eingeführt in Version

5.0

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

Betroffene APIs

Alle System.Security.Cryptography-APIs außer:

  • 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