“通过来自现有页面的 HTTP 请求检查最新数据”是什么意思?是你的页面,还是别人的?另外,为什么您认为您的代码需要位于 WCF 服务或 ASP.NET 页面中?从您目前所了解的情况来看,这听起来像是一个常规的可执行文件。让我们回顾一下它会做什么:
- 通过 HTTP 拉取页面,检查自上次以来它是否更改
- 如果是这样,请提取注册客户列表,将 GCM 发送给他们
这两项任务都不涉及提供网页。如果这段代码需要以某种方式与网站交互,那没关系;但它不一定是上述网站的一部分。它可以,但不是必须的。
也就是说,纯粹在 Web 服务器环境中运行计划任务是很棘手的,几乎是不可能的。那里有多种调度工具(首先想到的是 Windows 任务调度程序)——但它们大多是面向执行程序的——即独立程序、EXE。如果您绝对必须在 Web 服务器中运行此代码,您可以编写一些可执行的独立程序(例如,在 JavaScript 中使用 XMLHTTPRequest 或 cURL 调用),这将导致对本地 Web 服务器的 HTTP 请求,并安排对所述脚本的调用在任务计划程序中。
编辑:调度本身不能也不应该是基于网络的。调度引擎在 Web 服务之外——大多数托管服务提供商会在 Windows 任务调度器之上提供这样的服务。检查您的服务器的管理界面(CPanel、RDP 或您有什么)。
无论如何,要从调度程序调用网页,请调度以下命令:
cscript.exe c:\SomePath\CallWeb.js
CallWeb.js 是这样的:
var xh = new ActiveXObject("Msxml2.XMLHTTP");
xh.open("GET", "http://localhost/mypage.aspx", false);
xh.send();
其中 mypage.aspx 是拉取 SonDepremler.aspx、解析、检测更改并发送 GCM 的页面。
这是您的问题 #1 的答案 - 您如何在托管的 Web 服务器环境中进行一些预定的处理。如果您对解决方案的其他部分感到困惑,请提出单独的问题。