Remotizzazione e gestione eventi

lunedì 27 novembre 2006 - 18.29

Lindbergh Profilo | Newbie

Ciao a tutti, io devo remotizzare un'applicazione che effettua operazioni su alcuni modem e recuperare da web la classe remotizzata.
Sto utilizzando la classe principale MyLibrary che è derivata da MarshalByRefObject e sull'applicazione server eseguo queste istruzioni:

public class MyLibrary : MarshalByRefObject
{
/// <summary>
/// Evento da richiamare dalle applicazioni che si collegano
/// </summary>
public event EventHandler OnLabelEvent = null;

public int MetodoDiProva()
{
return 1;
}

}

// Crea il canale TCP server
TcpChannel serverChannel = new TcpChannel(8080);

// Registra il canale server
ChannelServices.RegisterChannel(serverChannel, true);

// Registra l'oggetto come tipo noto
RemotingConfiguration.RegisterWellKnownServiceType(typeof(MyLibrary), "MyLibrary.rem", WellKnownObjectMode.Singleton);


Quando bisogna richiamare l'applicazione dal client eseguo queste istruzioni:

// Crea un nuovo canale TCP
TcpChannel clientChannel = new TcpChannel();

// Registra il canale TCP creato
ChannelServices.RegisterChannel(clientChannel, true);

// Registra un client per l'oggetto remoto
WellKnownClientTypeEntry remoteType = new WellKnownClientTypeEntry(typeof(MyLibrary), "tcp://localhost:8080/MyLibrary.rem");

// Registra l'oggetto remoto come noto
RemotingConfiguration.RegisterWellKnownClientType(remoteType);

// Associa a library le librerie avviate con ACT_full Server
MyLibrary library = (MyLibrary)Activator.GetObject(typeof(MyLibrary), "tcp://localhost:8080/MyLibrary.rem");

// QUESTA ISTRUZIONE FUNZIONA BENISSIMO E RECUPERA IL VALORE 1
int i = library.MetodoDiProva;

// QUESTA ISTRUZIONE GENERERA L'ECCEZIONE
library.OnLabelEvent += new EventHandler(library_OnLabelEvent);

void library_OnLabelEvent(object sender, EventArgs e)
{
}

Tutto funziona benissimo, il problema attualmente è solo nella gestione degli eventi che vengono generati dall'applicazione remotizzata e che vorrei recuperare quando un client è connesso.
L'eccezione generata è la seguente:
SecurityException non è stata gestita
Il tipo System.DelegateSerializationHolder e i tipi derivati (ad esempio System.DelegateSerializationHolder) non possono essere deserializzati al livello di protezione corrente.

Qualcuno sa darmi dei consigli?

Grazie e ciao
Stefano


Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5