使用ASP.NET将文件从服务器发送到客户端

时间:2011-05-23 18:28:23

标签: asp.net wcf sockets networking ftp

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

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

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

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

通过局域网,如果你拥有正确的权限等,你可以使用File.Copy写入不同机器上的磁盘 - 没有什么特别之处。

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

如果问题是由于Windows 7下的防火墙问题导致WCF等工作从客户端工作可能会很痛苦,您可以采取不同的路径并让客户端定期ping服务器以查找新内容。为了给服务器一个引用点,ping可以包含收到的最新文件的名称或创建日期。服务器可以回复一个新文件列表,然后客户端可以逐个进行几次WCF调用以拉下内容。此模式使所有客户端流量保持出站。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

最后,我决定在每台客户端计算机上安装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