【问题标题】:System.Runtime.Remoting.RemotingException when calling a remote object's propertySystem.Runtime.Remoting.RemotingException 调用远程对象的属性时
【发布时间】:2016-01-06 16:40:34
【问题描述】:

我正在维护一个遗留模块,系统从用户 (asp.net) 那里获取一些信息,然后通过远程处理调用远程服务器以在连接到远程服务器的打印机上打印收据。直到最近,远程服务器还能够连接到数据库,所以我们只传递了一个 int 值(paymentId)。

但是现在,我们的主应用程序 (asp.net) 正在与数据库一起移到异地,但收据打印仍然需要工作,所以现在,我们正在尝试发送所有收据的信息,以便服务器可以生成收据而不是使用 id 并从数据库生成收据。所以,这个概念是非常基本的,除了......远程有时有点痛苦。 ;)

我的对象是可序列化的,并且继承自 MarshalByRefObject。它包含一些 int、decimal 和 string 属性。该对象通过并且似乎正确地序列化和反序列化,但是当调用任何属性时,我收到异常。我在其他帖子/论坛上读到我必须在我的客户端应用程序 (asp.net) 上打开一个客户端频道,但我很困惑。

我的客户端应用程序连接到许多此类远程服务,具体取决于它必须打印的打印机。我必须为每个人创建一个客户频道吗?我可以在连接到服务器时“按需”配置客户端通道,还是必须在应用程序启动时创建它?我可以指定何时连接 (Activator.GetObject(...)) 以使用双向通道吗?有没有办法不需要客户端通道(如将所有属性转换为字段或其他东西)?

这是我的堆栈跟踪(所以我们看到问题在于 PaymentID 属性,这是第一个被访问的属性):

at System.Runtime.Remoting.Proxies.RemotingProxy.InternalInvoke(IMethodCallMessage reqMcmMsg, Boolean useDispatchMessage, Int32 callType)
at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(IMessage reqMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at GDCMLib.Reports.DataSources.PaymentReceiptItem.get_PaymentID()
at GDCMLib.Services.PaymentReceiptPrintRemoteObj.PaymentReceiptPrint.PrintPaymentReceipt(PaymentReceiptItem paymentReceipt) in u:\SVNClient\PortailDCM\trunk\Libraries\GDCMLib.Services.PaymentReceiptPrintRemoteObj\PaymentReceiptPrint.cs:ligne 37

【问题讨论】:

  • 看起来你没有代理,这将引发 RemoteException。您不必在应用程序启动时设置所有客户端通道,但是当您使用代理时,您必须拥有从代理到真实对象的实时通道。这个 (msdn.microsoft.com/en-us/library/ms973857.aspx) 是一个资源,可以帮助您解决问题。
  • 谢谢。我现在在激活对象之前在端口 0 上创建一个 TcpChannel,注册它,调用对象上的方法,然后取消注册通道。如果我的两个应用程序都在同一台计算机上,它可以完美地工作,但如果它们在不同的计算机上,它就不起作用。在不同的计算机上,第一次访问属性时出现异常。我试图修改 Windows 防火墙设置(我无法禁用它,因为我在域中并且我无法控制该设置),这似乎不是问题。有人有想法吗?再次感谢

标签: c# .net remoting


【解决方案1】:

最后,由于我的数据结构只使用基本数据类型,我通过将其从类更改为结构来确保将其作为值类型传输。现在可以完美运行了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多