【发布时间】:2008-10-20 18:18:20
【问题描述】:
我遇到了一个小问题,我想不通。我有一个服务器端 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 只能从对象的本机上下文中调用。”。谁能指出如何让它正常工作?我需要在远程对象的方法调用之前和之后注入一些代码。干杯!
【问题讨论】: