2010-03-07 21 views
8

En una aplicación C#, estoy creando una firma usando DSACryptoServiceProvider. Si el usuario que ejecuta la aplicación tiene un perfil temporal, recibo una excepción: CryptographicException: "El perfil para el usuario es un perfil temporal".¿Cómo sé si el perfil del usuario que ejecuta una aplicación es un perfil temporal?

El error se puede resolver si configuro DSACryptoServiceProvider.UseMachineKeyStore = true; Pero primero quiero comprobar si este cambio es necesario. Para eso, quiero verificar en mi código si el usuario tiene un perfil temporal.

¿Cómo puedo verificarlo?

+0

no es el mismo caso de uso, pero esta es una pregunta similar - http://stackoverflow.com/questions/43762021/programmatically-detect-that-user-has-logged-in-with-temporary-profile – William

Respuesta

1

La única información que he encontrado sobre este tema parece apuntar a la implementación de clickonce.

No es aparentemente ninguna solución conocida ya que se debe utilizar un perfil no temporal con el fin de hacer que las llamadas que están haciendo ...

parecer que parecen haber respondido a su propia pregunta mira aquí ...

Lo quiero en mi código de verificación del usuario tiene un perfil temporal.

¿Cómo puedo verificarlo?

Y la respuesta es ...

Si el usuario que ejecuta el apllication tiene un perfil temporal, consigo un excepción: CryptographicException: "El perfil de usuario es un temporal perfil."

Parece bastante sencillo, si obtiene ese error, debe ejecutar utilizando un perfil diferente. Puede tener un método de prueba que ejecute este código como verificación antes de ejecutar su código actual.

He oído hablar de otra opción, sin embargo, suponiendo que esto es en el contexto de una aplicación asp.net debe ser capaz de obtener el perfil actual como esto ...

ProfileCommon profile = HttpContext.Current.Profile as ProfileCommon; 

Desde allí se debe ser capaz de consultar la instancia de perfil, creo que es un tipo de ProfileBase documentado aquí ...

http://msdn.microsoft.com/en-us/library/ms151820(v=VS.100).aspx

Esperamos que esto ayude a aclarar las cosas un poco para usted.

Cuestiones relacionadas