我有两个服务在同一个进程中运行,在不同的IP端口上托管相同的类。
根据调用的端口,预期实例化的类可以针对不同的数据库工作。
是否可以在我的类MarshalByRefObjects的构造函数中获取一些“所有者”信息?
对服务,TcpCannel或某些任意值的引用。什么都行,我很绝望。
澄清(我希望): 在我的Main()中我有
ServicesToRun = new ServiceBase[] {
new BatchServer("ServerA"),
new BatchServer("ServerB")};
并在我的ServiceBase实现中的ExecuteService()中:
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(RmtObject), "RmtObject",
WellKnownObjectMode.Singleton);
在客户端我创建这样的对象:
(RmtObject)Activator.GetObject(typeof(RmtObject), theURI, WellKnownObjectMode.Singleton);
当我在RmtObject上执行的方法时,我需要在RmtObject中知道它是否属于ServerA或ServerB。
如果它让事情变得更容易,我可以使用WellKnownObjectMode.SingleCall。
答案 0 :(得分:0)
我通过实现自己的SinkProvider解决了这个问题,就像这里最常投票的答案一样:Identifying the client during a .NET remoting invocation。