У меня есть небольшая проблема, которую я не могу понять. У меня есть серверная сторона MarshalByRefObject, которую я пытаюсь обернуть прозрачным прокси-сервером на стороне клиента. Вот установка:Как добавить прозрачный клиентский прокси-сервер к удаленному объекту
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);
}
}
Проблема заключается в том, что вызов RemotingServices.ExecuteMethod, генерируется исключение с сообщением «ExecuteMessage можно назвать только из родного контекста объекта.». Может ли кто-нибудь указать, как заставить это работать правильно? Мне нужно ввести код до и после вызова метода на удаленных объектах. Ура!