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
Empfohlene Maßnahme
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