Dela via


Api:er för System.Security.Cryptography stöds inte på Blazor WebAssembly

System.Security.Cryptography API:er genererar en PlatformNotSupportedException vid körning när de körs i en webbläsare.

Ändra beskrivning

I tidigare .NET-versioner är de flesta API System.Security.Cryptography :er inte tillgängliga för Blazor WebAssembly-appar. Från och med .NET 5 riktar Blazor WebAssembly-appar in sig på hela .NET 5 API-ytan, men inte alla .NET 5-API:er stöds på grund av webbläsarens sandbox-begränsningar. I .NET 5 och senare versioner genererar API:erna som inte stöds System.Security.Cryptography en PlatformNotSupportedException när de körs på WebAssembly.

Dricks

Analysverktyg för plattformskompatibilitet flaggar alla anrop till de berörda API:erna när du skapar ett projekt som stöder webbläsarplattformen. Den här analysatorn körs som standard i .NET 5 och senare appar.

Orsak till ändringen

Microsoft kan inte leverera OpenSSL som ett beroende i Blazor WebAssembly-konfigurationen. Vi försökte kringgå detta genom att försöka integrera med webbläsarens SubtleCrypto API. Tyvärr krävdes betydande API-ändringar som gjorde det för svårt att integrera.

Version introducerad

5,0

Det finns inga bra lösningar att föreslå just nu.

Berörda API:er

Alla System.Security.Cryptography API:er utom följande:

  • 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