Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Remotizzazione e gestione eventi
lunedì 27 novembre 2006 - 18.29
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Lindbergh
Profilo
| Newbie
9
messaggi | Data Invio:
lun 27 nov 2006 - 18:29
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
Torna su
Stanze Forum
Elenco Threads
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 !