Compartir a través de


Las API System.Security.Cryptography no se admiten en WebAssembly de Blazor

System.Security.Cryptography Las APIs lanzan una PlatformNotSupportedException en tiempo de ejecución cuando se ejecutan en un navegador.

Descripción del cambio

En versiones anteriores de .NET, la mayoría de las API de System.Security.Cryptography no están disponibles para las aplicaciones de Blazor WebAssembly. A partir de .NET 5, las aplicaciones WebAssembly de Blazor tienen como destino la superficie completa de la API de .NET 5, pero no todas las API de .NET 5 se admiten debido a restricciones del entorno aislado del explorador. En .NET 5 y versiones posteriores, las API de System.Security.Cryptography no compatibles inician una excepción PlatformNotSupportedException cuando se ejecutan en WebAssembly.

Sugerencia

El analizador de compatibilidad de plataforma marcará las llamadas a las API afectadas al compilar un proyecto que admita la plataforma del explorador. Este analizador se ejecuta de forma predeterminada en aplicaciones de .NET 5 y versiones posteriores.

Motivo del cambio

Microsoft no puede enviar OpenSSL como dependencia en la configuración de WebAssembly de Blazor. Intentamos solucionarlo intentando integrarlo con la API del SubtleCrypto explorador. Desafortunadamente, requería cambios significativos en la API que lo hacían demasiado difícil de integrar.

Versión introducida

5.0

No hay ninguna buena solución alternativa para sugerir en este momento.

Las APIs afectadas

Todas las System.Security.Cryptography API excepto las siguientes:

  • 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