Condividi tramite


Le API System.Security.Cryptography non sono supportate in Blazor WebAssembly

System.Security.Cryptography Le API generano un'eccezione PlatformNotSupportedException in fase di esecuzione quando vengono eseguite in un browser.

Descrizione delle modifiche

Nelle versioni precedenti di .NET la maggior parte delle System.Security.Cryptography API non è disponibile per le app WebAssembly Blazor. A partire da .NET 5, le app WebAssembly Blazor hanno come destinazione l'area di attacco completa dell'API .NET 5, ma non tutte le API .NET 5 sono supportate a causa di vincoli sandbox del browser. In .NET 5 e versioni successive, le API non supportate System.Security.Cryptography generano un'eccezione PlatformNotSupportedException durante l'esecuzione in WebAssembly.

Suggerimento

L'analizzatore di compatibilità della piattaforma contrassegnerà tutte le chiamate alle API interessate quando si compila un progetto che supporta la piattaforma del browser. Questo analizzatore viene eseguito per impostazione predefinita nelle app .NET 5 e successive.

Motivo della modifica

Microsoft non è in grado di spedire OpenSSL come dipendenza nella configurazione di Blazor WebAssembly. Si è tentato di risolvere questo problema provando a integrarsi con l'API del SubtleCrypto browser. Sfortunatamente, richiedeva modifiche significative all'API che lo rendevano troppo difficile da integrare.

Versione introdotta

5.0

Non esistono soluzioni alternative valide da suggerire in questo momento.

Le API interessate

Tutte le System.Security.Cryptography API, ad eccezione delle seguenti:

  • 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