14

He estado desarrollando un sitio ASP.NET en una máquina más antigua que ejecuta XP en el hogar. Recientemente obtuve una nueva PC Win 7 y moví todos mis archivos de proyecto. Cuando intento ejecutar el proyecto, me sale este mensaje de error:El contenedor de la llave RSA no se pudo abrir

"Failed to decrypt using provider 'MyRsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened."

me di cuenta que encriptado partes de mi archivo web.config utilizando un RSA encryption. Aquí es donde yace el problema. No estoy seguro de cómo hacer que esa clave vuelva a funcionar para poder usarla en mi nueva máquina. He exportado la clave de la máquina más antigua e importados usando:

aspnet_regiis -pi "RSAProviderName" "C:\RSA_configkey.xml"

Esto se ha importado correctamente. Luego ejecuté el proyecto, pero apareció el mismo mensaje de error. Pensé que podría ser una cosa permiso, por lo que me encontré:

aspnet_regiis -pa "RSAProviderName" "\Desktop" -full

Este fue también un éxito, pero todavía consigo el error. Después de leer todo, he visto personas que usan "ASPNET" en lugar de "\ Desktop" (Desktop es el nombre de mi máquina). Sin embargo, cuando intento y el uso de "ASPNET", me sale:

No mapping between account name and security IDs was done. <Exception from HRESULT = 0x80070534

no puede trabajar en el proyecto hasta que se solucione, por lo que cualquier ayuda es muy apreciada. Gracias!

Respuesta

27

Si todavía tiene acceso a la máquina anterior, siempre puede descifrar la sección de configuración en esa máquina, luego copie el archivo de configuración no encriptado a la nueva máquina (y, si es necesario, vuelva a encriptar el archivo en la máquina vieja)

En Windows 7, la cuenta en la que los grupos de aplicaciones de IIS se ejecutan por defecto será probablemente ApplicationPoolIdentity (en contraposición a ASPNET). Para conceder permisos, intente esto:

aspnet_regiis -pa RSAProviderName "IIS APPPOOL\DefaultAppPool" -full 

Por cierto, si usted decide perseverar en la copia de la llave de la máquina vieja a la nueva, usted debe asegurarse de que, al exportar, exportar la privada datos clave también:

aspnet_regiis -px RSAProviderName C:\RSA_configkey.xml -pri 

y, opcionalmente, para que los datos clave exportable durante la importación:

aspnet_regiis -pi RSAProviderName C:\RSA_configkey.xml -exp 
+0

Gracias por la ayuda. Debería tener acceso a la máquina más vieja en la próxima hora, así que probaré este método. En una nota al margen, ¿cuál es la mejor manera de restablecer los permisos que he otorgado (como '\ desktop')? No es demasiado importante ya que soy el único usuario de la máquina, pero podría ser mejor. – keyboardP

+1

¡Gracias, eso ha solucionado el problema! – keyboardP

+3

De nada. Para revocar los permisos, puede volver a utilizar aspnet_regiis con el modificador '-pr'. Alternativamente, busque el archivo en 'C: \ Users \ All Users \ Microsoft \ Crypto \ RSA \ MachineKeys' y cambie las autorizaciones a través de Windows. –

Cuestiones relacionadas