.NET Remoting y eventos

28/09/2004 - 12:31 por Mythox | Informe spam
Hola tod@s:

Estoy implementando unas pruebas con .NET Remoting y me han surgido algunos
problemas al intentar usar los delegados en los objetos de tipo
"MarshalByRefObject":

Tengo una clase llamada "Proxy" que extiende de "MarshalByRefObject".
Registro el objeto remoto de esta forma:

//Registrando el channel (HTTP) puerto 8080
ChannelServices.RegisterChannel(new HttpChannel(8080));
//Registrando ativaçà£o server-si
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(Proxy), //tipo
"ProxyURI", //URI
WellKnownObjectMode.Singleton //modo
);
Luego lo utilizo:

//Registrando el channel (HTTP)
ChannelServices.RegisterChannel(new HttpChannel(0));
//Registrando el client
RemotingConfiguration.RegisterWellKnownClientType(
typeof(Proxy), //tipo
"http://localhost:8080/ProxyURI" //URI
);
try {
//Instanciamento e invocación del objeto remot
p = new Proxy();
p.Evento += new Delegado(p_Evento);
} catch (System.Net.WebException wex) {
Console.WriteLine(wex.Message);
}

Al ejecutar la linea:

p.Evento += new Delegado(p_Evento);

Me da un error de seguridad "SecurityException", dice lo siguiente:

Type System.DelegateSerializationHolder and the types derived from it (such
as System.DelegateSerializationHolder) are not permitted to be deserialized
at this security level.

No se a que se debe, si alguien puede ayudarme a comprender el porque,
gracias.
 

Leer las respuestas

#1 A.Poblacion
28/09/2004 - 12:55 | Informe spam
¿Estás usando el framework 1.1? En esta versión cambiaron los ajustes de
seguridad respecto a la 1.0, y ciertas cosas que antes funcionaban dan
errores parecidos al que has puesto en la versión 1.1. Se arregla con un
código parecido al siguiente:


BinaryClientFormatterSinkProvider clientProvider = new
BinaryClientFormatterSinkProvider();
BinaryServerFormatterSinkProvider serverProvider = new
BinaryServerFormatterSinkProvider();
serverProvider.TypeFilterLevel System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = 0;
string s = System.Guid.NewGuid().ToString();
props["name"] = s;
props["typeFilterLevel"] System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
TcpChannel CanalDeComunicacion = new
TcpChannel(props,clientProvider,serverProvider);
ChannelServices.RegisterChannel(CanalDeComunicacion);


"Mythox" wrote in message
news:
Hola :

Estoy implementando unas pruebas con .NET Remoting y me han surgido


algunos
problemas al intentar usar los delegados en los objetos de tipo
"MarshalByRefObject":

Tengo una clase llamada "Proxy" que extiende de "MarshalByRefObject".
Registro el objeto remoto de esta forma:

//Registrando el channel (HTTP) puerto 8080
ChannelServices.RegisterChannel(new HttpChannel(8080));
//Registrando ativaçà£o server-si
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(Proxy), //tipo
"ProxyURI", //URI
WellKnownObjectMode.Singleton //modo
);
Luego lo utilizo:

//Registrando el channel (HTTP)
ChannelServices.RegisterChannel(new HttpChannel(0));
//Registrando el client
RemotingConfiguration.RegisterWellKnownClientType(
typeof(Proxy), //tipo
"http://localhost:8080/ProxyURI" //URI
);
try {
//Instanciamento e invocación del objeto remot
p = new Proxy();
p.Evento += new Delegado(p_Evento);
} catch (System.Net.WebException wex) {
Console.WriteLine(wex.Message);
}

Al ejecutar la linea:

p.Evento += new Delegado(p_Evento);

Me da un error de seguridad "SecurityException", dice lo siguiente:

Type System.DelegateSerializationHolder and the types derived from it


(such
as System.DelegateSerializationHolder) are not permitted to be


deserialized
at this security level.

No se a que se debe, si alguien puede ayudarme a comprender el porque,
gracias.


Preguntas similares