【问题标题】:Use .NET Remoting to transfer a file?使用 .NET Remoting 传输文件?
【发布时间】:2009-07-09 15:55:27
【问题描述】:

我正在使用 .NET 远程处理在网站和 Windows 服务之间进行通信。他们都生活在不同的机器上。我有一个静态定义的端口号,供所有请求和响应使用。

我也使用这种机制将文件从网站传输到 Windows 服务盒。我正在将远程对象中的 Stream 对象传递给 Windows 服务框。 Web 框正在打开另一个看似随机的端口,以促进包含文件 Stream 的请求。

有没有办法指定这个文件流应该使用哪个端口?任何人都知道为什么它不想使用我定义的端口并且我所有其他请求/响应都可以毫无问题地使用?

我正在使用 .NET Framework v2。

【问题讨论】:

  • 您应该编辑您的问题以包含您正在使用的 .NET 版本。另外,仅供参考,您应该迁移到 WCF,它已经取代了 Remoting。

标签: .net file remoting transfer


【解决方案1】:

只需将您的流读入一个字节[],然后传递它。正是我遇到这种情况时所做的。

【讨论】:

  • 当你的字节数组是一个巨大的文件时会发生什么?将其加载到字节数组中会破坏流的目的
  • 是的,它违背了流的目的。但这是远程过程调用,您应该认为这对于文件传输来说很笨重。
【解决方案2】:

这里有人用 .NET 远程处理实现了文件传输:

http://www.codeproject.com/KB/dotnet/Net_Remoting_Events.aspx

源代码可从页面上的链接获得。

但是,我同意 John Saunders 的评论,即您应该转到 WCF

【讨论】:

    【解决方案3】:

    向您的远程处理对象添加一个方法以返回 Stream

    请记住通过将其包含在 using 子句中来正确处理它。

    【讨论】:

    • 试过这个,但是得到“这个远程代理没有通道接收器,这意味着服务器没有注册的服务器通道正在监听,或者这个应用程序没有合适的客户端通道来与服务器通信。”
    【解决方案4】:

    使用“远程回调”将“流式”远程对象作为参数传递。

    http://www.codeproject.com/Articles/1584/Using-the-Remoting-Callbacks-in-Net-Applications

    【讨论】:

      猜你喜欢
      • 2010-10-18
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 2013-02-06
      • 2010-11-14
      • 2011-05-26
      • 1970-01-01
      • 2010-12-04
      相关资源
      最近更新 更多