• Viernes 1 de Noviembre de 2024, 09:29

Autor Tema:  Campos Estáticos En Remoting  (Leído 1532 veces)

Jonny

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Campos Estáticos En Remoting
« en: Viernes 10 de Marzo de 2006, 08:36 »
0
Muy buenas:

Hola, soy un estudiante de informática que está haciendo proyecto de
fin de carrera. Me han asignado un proyecto en el que tengo que hacer
uso del lenguaje de programación C# en la plataforma .NET. Estoy
desarrollando una aplicación distribuida y en la cual hago uso de
remoting para la comunicación entre diferentes procesos.

En el servidor he publicado un servicio que tiene una función en el
que se le pasa como parámetro un objeto de una clase marcada como
[Serializable]. Esta clase tiene dos campos estáticos, que al
serializarlo en el cliente no da ningún problema, pero parece que en
el momento de deserializarlo y llamar al constructor estático en el
servidor se produce esta excepción:

Excepción no controlada del tipo 'System.Security.SecurityException'
en mscorlib.dll

Información adicional: Error de solicitud de permiso de tipo
System.Security.Permissions.FileIOPermission, mscorlib,
Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.

Los campos estáticos son los siguientes:

private const string PathSchema = DirectorioSchemas +
"Dispatcher\\MensajePrueba.xsd";
private static XmlSchemaCollection Schemas;

Y el constructor estático únicamente tiene estas dos líneas:

Schemas = new XmlSchemaCollection();
Schemas.Add(null, PathSchema);

La excepción se produce en la segunda instrucción del constructor
estático. Al debugear el string PathSchema tiene el valor correcto y
el XmlSchema está bien.

De momento he solucionado el problema de una manera bastante chapucera:
nada más comenzar el servidor he creado un objeto del mismo tipo que
el parámetro que mando, de está forma se llama al contructor
estático y a partir de ahí no me da ningún problema. Pero, no creo
que esta sea una solución correcta.

Espero que alguien sepa ayudarme.

Gracias y un saludo.

Edito (13-03-06):

Después de hacer unas pruebas me he dado cuenta que el problema es al intentar acceder al fichero del schema. He intentado acceder a un fichero de texto normal con la siguiente instrucción:

System.IO.File.Open("../../text.txt", System.IO.FileMode.Open);

Con idéntico resultado. Como conclusión decir que la excepción de produce al intentar leer un fichero. ¿Puede ser por la configuración de seguridad y permisos que tenga yo en el framework de .NET? ¿Cómo puedo cambiar eso para que tenga permisos para acceder a ficheros?

Jonny

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Campos Estáticos En Remoting
« Respuesta #1 en: Martes 28 de Marzo de 2006, 11:04 »
0
Al final lo que he hecho es marcar el clase [Serializable] con otro atributo:

[System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Assert, Name="FullTrust")]

Este atributo hace que se den permisos para acceder a los recursos de este código, aunque quien lo llame no los tenga.

Aunque he leído que esto puede crear vulnerabilidades en la seguridad, ¿alguien sabe algo para remediar esto?

Saludos.