【问题标题】:Call function in Remotable class远程类中的调用函数
【发布时间】:2011-03-08 00:05:55
【问题描述】:

我有一个从MarshalByRefObject 派生的远程类。我有两个公共函数,比如TestMethod1 和TestMethod2。我从 HttpHandler 调用这些,它工作正常。现在我添加了一个新函数TestMethod3,它类似于前面提到的两种方法。但是,当从同一个处理程序调用此函数并获得“无法找到此应用程序的 .exe”的异常时,其中 exe 是远程对象运行的进程。

class HttpHandlerClass : IHttpHandler
{
    RemotingConfiguration.RegisterWellKnownClientType(typeof(RemoteClass),"ipc://completeurl");

    RemoteClass rc = new RemoteClass();

    if (condition1)
        rc.TestMethod1();

    else 
        rc.TestMethod3();
}

class RemoteClass: MarshalByRefObject
{
   public void TestMethod1(int a) { }
   public void TestMethod2(string b) { }
   public void TestMethod3(string c) { }
}

不知道为什么。在我看来,我需要进行一些更改(不知道在哪里),以便识别 TestMethod3。

有什么想法吗?

输出:无法加载文件或程序集“Project.exe,版本=1.0.0.0,文化中性,publickeytoken=blahblah”或其依赖项之一。系统找不到指定的文件。”

刚刚注意到,它正在寻找旧版本的 Project.exe,而不是正在执行的那个。

【问题讨论】:

  • 你能提供完整的例外吗?如果可能的话编码sn-ps?很好地理解问题。
  • 您是否知道远程处理已被弃用以支持 WCF?
  • John - 好吧,我没有,但我需要坚持在这里重新定位,因为这是遵循的标准。
  • 好的。我刚刚发现了一些东西。如果我只是添加一个函数并没有做太多,只是访问同一个类中的成员,它工作正常。但是,如果我访问另一个类的函数,则会引发该异常。

标签: c# .net remoting


【解决方案1】:

改用ICE?我在和你一样的情况下挣扎了几个月,然后在我切换架构的一周内解决了所有问题。

【讨论】:

  • 不幸的是,我不能,因为它的现有代码也被其他人使用,我需要更新,我无法切换到 ICE。
【解决方案2】:

这只是一个疯狂的猜测,但我在远程处理之前遇到过这个问题。

您确定要远程处理的.exe 是最新的吗?有可能你没有将编译后的文件复制到预期的位置,然后旧方法仍然可以工作,但新方法会完全破坏......

【讨论】:

    猜你喜欢
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2013-11-10
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多