背景:我有一个 ASP.NET MVC Web 应用程序。我想定期捕获其用户可见的 HTML 内容并将其保存在某个地方,以便我可以跟踪内容如何随着时间的推移而演变。例如,我希望能够提取一年前存在的主页 HTML。这可以使用某种爬虫来完成,该爬虫会定期遍历 URL 列表。
我的问题:让网站本身发布HttpWebRequest
到自己的 URL是否是个好主意?我可以Timer
在 Web 应用程序内部启动一个每小时下载和存储一个 URL 的应用程序。
另一种架构是将爬虫放在外部应用程序(如 Windows 服务)中。不过,这将是一个复杂得多的架构。在这个问题中,我不想探索这个选项,因为我试图摆脱一个更简单的架构。
如果 ASP.NET 应用程序使用 请求自己的 URL,会出现什么问题HttpWebRequest
?
在伪代码中:
StartTimer(TimeSpan.FromHours(1), () => {
var url = "http://localhost/SomePageInTheCurrentW3wpProcess.aspx";
var data = new WebClient().DownloadString(url); //calling current application
Persist(data);
});
我不确定会发生什么坏事。我正在考虑处理重入问题。我必须小心分布式死锁等。