如何使用ASP.NET网页安排在服务器上下载文件

时间:2011-05-26 12:44:41

标签: c# asp.net

如何将文件从Web服务器下载到另一台iis服务器

e.g。我有很多想要在我的网站上托管的电影文件

电影上传到其他网站,我想在我自己的网站上抓取它们。

是否可以使用ASP.NET网页安排在服务器上异步下载文件? 我只使用FTP访问Web服务器,因为我正在使用共享主机。

4 个答案:

答案 0 :(得分:3)

您可以做的一件事就是使用窗口服务,即创建窗口服务并将计时器放入其中,这样可以轻松解决问题。

这是一篇好文章:Combine Web and Windows Services to Run Your ASP.NET Code at Scheduled Intervals

答案 1 :(得分:1)

如果您使用共享主机,则调度任务将很困难。 您可以实现一个服务页面,在请求时执行下载。此页面将在目标服务器上运行,并从源服务器请求文件列表,然后继续下载这些文件。服务器执行所有工作,请求服务页面的客户端可以只获取服务器正在执行的操作的简短日志。

接下来,在定期调用服务页面的其他系统上设置计划任务。

由于客户端对服务页面的调用负载非常低,因此您可以从几乎任何地方(家庭或办公室服务器,智能路由器(dd-wrt))在某个地方坐在衣柜里甚至是智能手机)。

这种方法的好处是你可以直接从浏览器访问服务页面,从任何地方手动触发下载。

缺点是,如果完成下载的时间超过最长请求持续时间,则您的请求可能会被终止。如果发生这种情况,您可能需要查看asynchronous handlers

答案 2 :(得分:0)

您可以连接任务以在每个页面加载或应用程序启动时运行(并定期回收应用程序池),但ASP.NET不适用于此类任务。

您可以更好地构建服务或命令行工具,该工具可以附加到任务计划程序,以便经常进行下载。

答案 3 :(得分:0)

1)将条目添加到ASP.Net应用程序中的队列 - MSMQ或数据库表。

2)编写一个从队列中读取并处理每个项目的Windows服务/控制台应用程序。

你也可以在SQL中使用ScheduledTask来实现(2) - 其他方面也毫无疑问 - 关键是你把队列放在中间以提供断开和不同步。