J'ai un petit problème que je n'arrive pas à comprendre. J'ai un côté serveur MarshalByRefObject que j'essaie d'enrouler un proxy transparent autour du côté client. Voici la configuration:Comment ajouter un proxy côté client transparent à un objet distant
public class ClientProgram {
public static void Main(string[] args) {
ITest test = (ITest)Activator.GetObject(typeof(ITest), "http://127.0.0.1:8765/Test.rem");
test = (ITest)new MyProxy(test).GetTransparentProxy();
test.Foo();
}
}
public class MyProxy : RealProxy {
private MarshalByRefObject _object;
public MyProxy(ITest pInstance)
: base(pInstance.GetType()) {
_object = (MarshalByRefObject)pInstance;
}
public override IMessage Invoke(IMessage msg) {
return RemotingServices.ExecuteMessage(_object, (IMethodCallMessage)msg);
}
}
Le problème est que l'appel à RemotingServices.ExecuteMethod, une exception est levée avec le message « ExecuteMessage peut être appelé que dans le contexte natif de l'objet. ». Quelqu'un peut-il indiquer comment cela fonctionne correctement? J'ai besoin d'injecter du code avant et après les appels de méthode sur les objets distants. À votre santé!