none
Error de permiso al utilizar clase de mscorlib.dll (System.Runtime.Serialization.Formatters.Binary) RRS feed

  • Pregunta

  • Buenas, tengo el siguiente problema de permisos en ensablados con Framework 3.5
    Una aplicacion web aspx, en un codigo cs que se encuentra en el directorio app_code, utiliza un metodo que se encuentra en una clase en otro proyecto que al compilar se transforma en una dll (es proyecto referenciado en el proyecto web).
    Esta dll se encuentra en la carpeta bin del proyecto web una vez pongo en producción el proyecto en el IIS.

    Dentro del método de la dll, se hace uso de metodos de este espacio de nombres:
    using
     System.Runtime.Serialization.Formatters.Binary;
    
    el cual se encuentra dentro de la dll:
        C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll



    <br/>
     //Funciona bien<br/>
    
     Stream stream = File.Open(nombreFichero.ToString(), FileMode.Create);
    <br/>
    //Falla, BinaryFormatter e sla clase que se encuentra en la dll mscorlib<br/>
    
     BinaryFormatter bformatter = new
     BinaryFormatter();
    

    El mensaje de error que se muestra es el siguiete:

     Excepción de seguridad
    Descripción: La aplicación intentó realizar una operación no permitida por la directiva de seguridad.
     Para otorgar a esta aplicación los permisos necesarios, póngase en contacto con el administrador
     del sistema o cambie el nivel de confianza de la aplicación en el archivo de configuración. Detalles de la excepción: System.Security.SecurityException: Error de solicitud de permiso
    de tipo 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0,
    Culture=neutral, PublicKeyToken=b77a5c561934e089'. Error de código fuente: Se ha generado una excepción no controlada durante la ejecución de la solicitud Web actual.
     La información sobre el origen y la ubicación de la excepción pueden identificarse utilizando
     la excepción del seguimiento de la pila siguiente. Seguimiento de la pila: [SecurityException: Error de solicitud de permiso de tipo 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.] System.Security.CodeAccessSecurityEngine.SpecialDemand(PermissionType whatPermission, StackCrawlMark& stackMark) +0 System.Security.CodeAccessPermission.DemandInternal(PermissionType permissionType) +23 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +60 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) +134 ...
    ¿A que puede ser debido? ¿Cómo puedo solucionarlo?

    Gracias por adelantado,
    miércoles, 8 de abril de 2009 21:33

Respuestas

  • ya hiciste esto?

    " cambie el nivel de confianza de la aplicación en el archivo de configuración "

    Y si ya lo hiciste,  hablaste con el administrador del servidor de ISS para que otorgue a tu app los permisos necesarios?


    Colabora con la comunidad, si éste mensaje te ha sido de utilidad, márcalo como respuesta correcta.
    Juan Carlos Ruiz Pacheco
    Ingeniero de Sistemas
    Microsoft MVP C#
    MCP,MCTS,DCE+Platino,OCA,OCP
    Blog Técnico
    miércoles, 8 de abril de 2009 23:41
    Moderador

Todas las respuestas

  • ya hiciste esto?

    " cambie el nivel de confianza de la aplicación en el archivo de configuración "

    Y si ya lo hiciste,  hablaste con el administrador del servidor de ISS para que otorgue a tu app los permisos necesarios?


    Colabora con la comunidad, si éste mensaje te ha sido de utilidad, márcalo como respuesta correcta.
    Juan Carlos Ruiz Pacheco
    Ingeniero de Sistemas
    Microsoft MVP C#
    MCP,MCTS,DCE+Platino,OCA,OCP
    Blog Técnico
    miércoles, 8 de abril de 2009 23:41
    Moderador
  • La verdad que no hice ningun cambio, ya que es una aplicación que está puesta en producción y no quiero experimentar mucho.
    He buscado lo de "cambie el nivel de confianza de la aplicación en el archivo de configuración " y lo que he encontrado parece que es facil hacerlo (http://msdn.microsoft.com/es-es/library/tkscy493(VS.80).aspx) Sería añadir unas entradas en el web.config indicandole el nivel de confianza.

    La cuestión es que quien parece que no tiene permisos, no es la aplicacion web, sino una dll, un ensamblado escrito en C# el cual hace uso de una clase del framework 2.0 (la clase System.Runtime.Serialization.Formatters.Binary de la libreria mscorlib.dll).

    Lo que creo que me está pasando es que mi dll no tiene permisos para hacer uso de mscorlib.dll. ¿Esto puede ser así o me estoy equivocando?
    ¿Cómo se le podría dar permisos a mi librería para que pueda hacer uso de esta clase de mscorlib.dll?

    Por cierto, el  administrador del IIS ya le otorgó permisos a la aplicación desde la consola de administración del IIS
    Muchas gracias por responder,
    jueves, 9 de abril de 2009 11:37