创建一个在ASP.NET中自行执行的页面

时间:2011-03-15 17:30:34

标签: c# asp.net

嘿伙计们,我正在尝试在我的网站上创建类似于网络抓取工具的网络应用。我几乎已经完成了爬行所需的所有代码,但我还是需要亲自去网页激活代码。有没有办法让我的ASP.NET代码每天在服务器上自动执行一次? (如果这有任何区别,我正在使用godaddy)

谢谢

3 个答案:

答案 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