嘿伙计们,我正在尝试在我的网站上创建类似于网络抓取工具的网络应用。我几乎已经完成了爬行所需的所有代码,但我还是需要亲自去网页激活代码。有没有办法让我的ASP.NET代码每天在服务器上自动执行一次? (如果这有任何区别,我正在使用godaddy)
谢谢
答案 0 :(得分:3)
您不需要“页面”,您需要预定的控制台应用程序或Windows服务。按设计,页面是可请求的服务器资源。 (查看RESTful设计。)它意味着由来自客户端的请求调用,可能执行一些服务器端逻辑,并返回对该客户端的响应。故事结束。
我想,你的网站可能会在应用程序启动时产生某种类型的线程。不过,对我来说似乎有点像黑客。但如果这是您与托管服务提供商的唯一选择,那么这可能确实是要走的路。 (虽然你仍然需要至少调用一次页面来启动它。)但是,理想情况下,你希望一个正在进行的进程由站点本身之外的应用程序或Windows服务处理。
(如果您确实使用了在应用程序启动时生成的线程,请注意可能导致应用程序重新启动的各种事情。一旦启动,这并不意味着它会保持不变。更改为配置文件,更改某些项目类型中的页面或代码,IIS希望释放资源,感觉就像重新启动池等。)
答案 1 :(得分:1)
最好的方法是不使用网页,而是使用满足您需要的方法创建类,并从global.asax文件中的Application_OnStart事件中调用该类。但是,代码可能每天被访问多次。但是,如果您使用数据库,则可以保留配置值以说明该进程运行的最后一天。然后仅在当前日期不等于上次运行日期时运行。
答案 2 :(得分:0)
为您的目的安排执行网页并不理想,但是:
如果您愿意随时打开浏览器,可以将其放在标题中:
<script type="text/javascript">
<!--
var timer = setInterval("autoRefresh()", 1000 * 60 * 1440);
function autoRefresh(){self.location.reload(true);}
//-->
</script>
或者,您可以在* nix服务器上创建一个cron作业,以便每天调用您的页面:
* 0 * * * /usr/local/bin/curl --silent --compressed http://www.domain.com/page