【问题标题】:Sending files from server to client with ASP.NET使用 ASP.NET 从服务器向客户端发送文件
【发布时间】:2011-05-23 18:28:23
【问题描述】:

我正在开发一个驻留在 Windows Server 2003 上的 C# ASP.NET 4.0 应用程序。通过网络计算机访问此应用程序,任何用户都可以将文件上传到 Windows 服务器。而且,一旦这些文件存储在服务器上,他/她就可以将这些文件从 windows 服务器复制到另一台联网的计算机上。

我找到了一种将文件上传到服务器磁盘上指定位置的方法, 但现在我需要将服务器磁盘上的这些文件发送到客户端计算机。

我的问题是:有什么方法可以将文件从服务器发送或复制到其他客户端计算机(不是访问 Web 服务的计算机)而不需要在客户端计算机上接收这些文件的程序? FTP、WCF、cmd 命令、套接字?

有什么想法吗?

【问题讨论】:

  • 如,您希望服务器自动将文件传播到客户端 PC?
  • 欢迎来到 SO。您可以通过编辑来更新您自己的问题。您可以为问题投票(赞成或反对),如果您得到满足您需求并回答了您的问题的答案,您可以将其标记为答案

标签: asp.net wcf sockets networking ftp


【解决方案1】:

如果您希望您的 web 应用程序的用户下载文件,我会研究“ashx 通用处理程序”。它将允许您通过 HTTP(s) 将文件发送回客户端。

如果您希望拥有远程用户,请告诉您的网络服务器将文件复制到与服务器位于同一局域网上的其他服务器,您可以使用正常的 System.IO 操作进行编写。

【讨论】:

  • 目标机器是运行 Windows 7 操作系统的简单计算机(它们没有运行 ftp 服务器配置)。因此,当我尝试通过 System.IO 操作将文件放在它们上时,会引发异常。你能解释一下“ashx 通用处理程序”结构吗?我对此有点困惑。
【解决方案2】:

通过 LAN,如果您拥有正确的权限等,您可以使用 File.Copy 写入另一台机器上的磁盘——这没什么特别的。

如果我们谈论的是互联网上的远程机器,那就另当别论了。无论是 FTP、WCF、DropBox 等,都必须在监听。

如果问题是由于 Windows 7 下的防火墙问题等问题,从客户端获取 WCF 之类的东西可能会很痛苦,您可以采取不同的路线,让客户端定期 ping 服务器以查找新内容.为了给服务器一个参考点,ping 可以包含最近收到的文件的名称或创建日期。服务器可以回复一个新文件列表,然后客户端可以一个接一个地进行几次 WCF 调用,以将内容拉下来。此模式将所有客户端流量保持在出站状态。

【讨论】:

  • @user766283:你遇到了什么错误?权限?超时?
  • @user766283:还有,文件有多大?
  • 服务器和客户端在同一个网络,但是我尝试过复制文件操作:File.Copy(@"c:/pathforlocalfile",@"\\targetmachinepath.fileExt");但是发生了一个例外,所以我猜那是通过互联网协议
  • 出来的错误是://找不到网络路径。但我不明白为什么会引发此异常,因为授予对路径的访问权限以通过网络位置进行写入和读取。文件是 MS Power Points 和文本文件。
  • @beb_lm:嗯,听起来确实像是网络或权限问题。 File.Copy 在这种情况下确实有效。我会仔细检查 (a) 该路径是否对该用户有效,以及 (b) 您是否已将权限授予正确的用户。
【解决方案3】:

如果您可以将程序作为有权访问该计算机的帐户运行,则可以。但是,在您的网络上拥有这种访问权限,可以授予对外部世界的访问权限,以便在您的内部网络上放置未经过滤的文件,这只是要求被黑客入侵。

【讨论】:

  • 安全问题不是问题,访问页面需要用户名和密码,并且服务器通过本地网络连接(互联网用户无法访问应用程序)。怎么可能?
  • 用户名和密码被黑(通常是因为它们很弱,在多个站点上重复使用,并且没有得到适当的保护)。您将授予对程序的不受限制的访问权限,该程序能够将任何文件放在网络上的任何计算机上。在有人通过它之前,在防火墙后面是好的。您想要在 Windows 网络上执行此操作是可能的,因为每个驱动器都有一个隐藏的根共享,允许管理员在需要时远程访问它。这样做需要在您的网络上拥有“上帝”权限。因此,您需要为您的程序授予访问它的权限。
【解决方案4】:

最后,我决定在每台客户端计算机上安装一个 FileZilla FTP 服务器,我的页面运行良好。但是另一种选择是在windows服务器中创建一个工作组,让每台客户端计算机都在这个工作组中工作,这样windows服务器就可以访问同一个工作组中的计算机。 以下是一些可能有助于创建工作组的链接:

http://helpdeskgeek.com/networking/cannot-see-other-computers-on-network-in-my-network-places/ http://www.computing.net/answers/windows-2003/server-2003-workgroup-setup-/1004.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 2014-09-07
    • 2014-10-08
    相关资源
    最近更新 更多