2010-08-11 64 views
1

我有一个ASP.NET web表单,它读取一个文件并将一些数据写入数据库。我需要按计划运行此过程。自动化ASP.NET Web表单

目前,我有一个调度批处理文件的计划任务。该批处理文件然后打开Internet Explorer并导航到该URL并且该流程被触发。还有另一个计划的批处理文件关闭Internet Explorer。

当然,有一个更优雅的方式来做到这一点。

+0

基本上你有一个“文件”输入类型的表单。 – h3xStream 2010-08-11 20:18:45

回答

1

您是否有权更改网站?很可能最好的解决方案是将Web窗体背后的功能抽象为它自己的类,并使用Web窗体和Web服务调用它。然后创建一个客户端应用程序(Windows服务或计划的控制台应用程序...我建议后者,因为它更容易调试和维护一段时间)击中Web服务。该网站仍然可以在需要时手动点击。

但是,如果我的第一个问题的答案是“否”,那么我会建议一个预定的客户端应用程序,只是建立一个web request并将其关闭。除了加载页面以启动过程之外,还需要做什么吗?

+0

Web服务通常与[binary file]/[ascii with specials]不兼容。你最终会用base64编码所有的东西。 – h3xStream 2010-08-11 20:25:13

+0

是的,我完全可以控制网站。 – mmcglynn 2010-08-11 20:27:52

+0

@ h3xStream:也许我错误地解释了请求。这听起来像是在服务器端完成的,Web表单只是“告诉它去”。 – David 2010-08-11 20:33:02

1

如果你只是抓取网页的启动过程,你能做到这一点使用PowerShell的,而不是IE:

$webclient = New-Object System.Net.WebClient 
$response = $webclient.DownloadData("http://www.stackoverflow.com/") 

如果您需要确认一些返回值,你可以这样说:

$encoding = New-Object System.Text.utf8Encoding 
$returnvalue = $encoding.GetString($response) 
0

如果你有cygwinwget,你可以安排就像

wget http://URL/whatever?getparams 
通话10

这只会完成请求并自行关闭。比尝试使用IE更优雅,但不像其他人那样编程密集。