One frequent question I see in the newsgroups is "How do I schedule a task to run in IIS?” This article discusses one technique using a VBS Script and Windows Task Scheduler. Using Windows Task scheduler allows custom jobs to execute without having to stay logged into a server. You can use this technique to request web pages frequently on a timed basis. This keeps the page in-memory providing a better performance. This could also request web pages to perform other administrative tasks.
Here are steps to get started.
- Write your VBS Script
- Develop the webpage to process the HTTP Request
- Create / Add table to database to track logging
- Schedule the VBS Script
Write your VBS script
The script makes an HTTP request to a webpage on a timed basis. (I.E. every 5 minutes).
Call LogEntry()
Sub LogEntry()
‘Force the script to finish on an error.
On Error Resume Next
'Declare variables
Dim objRequest
Dim URL
Set objRequest = CreateObject("Microsoft.XMLHTTP")
'Put together the URL link appending the Variables.
URL = "http://www.YourDomain.com/track.aspx
'Open the HTTP request and pass the URL to the objRequest object
objRequest.open "POST", URL , false
'Send the HTML Request
objRequest.Send
'Set the object to nothing
Set objRequest = Nothing
End Sub
Track.aspx webpage
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="tracklog.aspx.vb" Inherits="Tracklog" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Log Page</title>
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>
Tracklog.aspx.vb code behind
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Partial Class Tracklog
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
‘Put your code in that would process when Track.aspx is requested
Response.write(“Track.aspx was called:” & System.DateTime.Now())
End Sub
End Class
How to schedule a task using Windows Task Scheduler
A scheduled task will allow a person to schedule any script, program, or document to run. Scheduled Tasks run at the time specified which could be multiple times per minute, hour, or day. The KB Article explains step-by-step.
· http://support.microsoft.com/default.aspx?scid=kb;en-us;308569&sd=tech
Refererence links
- http://support.microsoft.com/kb/269238/EN-US/
- http://support.microsoft.com/?id=290591
- http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/obj_xmlhttprequest.asp
- http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceappservices5/html/wce50oriXMLHTTP.asp
Thanks. It’s helpful. 🙂
LikeLike
I’m glad this was useful.
Steve Schofield
Microsoft MVP – IIS
LikeLike
Really useful after loads of dodgy examples that didn’t work. Thanks Steve.
LikeLike
Great, it solved my problem to schedule a webpage to run every few minutes on local network. Thanks
LikeLike
Glad this helped resolve your problem.
~Steve.
LikeLike
Can a vb script create a scheduled task?
LikeLike
Yes, you would use ADSI or WMI to do this. You could also use the ‘RUN’ method of VBS to execute the ‘Scheduled Task’ EXE.
http://www.google.com/search?hl=en&q=create+a+scheduled+task+with+vbscript
LikeLike
what are the cons of this method ?
how long can the asp .neet script run ?
does the request being closed only after the script finished running ?
LikeLike
The schedule task and VBS script don’t really care how long the request is going to run or take to execute. The script is solely used to ‘request’ or kick off your URL.
LikeLike
What if the URL you’re trying to call is in a password protected directory? Is there a way to pass a user name and password?
LikeLike
Then I would do something like this article. http://www.4guysfromrolla.com/webtech/110100-1.2.shtml Also check out the XMLHTTP Object model on msdn.microsoft.com. This will give you all the properties and methods avaiable.
LikeLike
it is very heplful. but i do not know how to run vbs script with windows scheduler. would you please drop a few lines? thanks
LikeLike
Well I tried, but didn’t get any response…. the ASPX page couldn’t write into my MS Access database…
any answer????
LikeLike
Really useful!
LikeLike
You can also consider using an online ‘cron’ service such as http://onlinejobscheduler.com to scheduler http requests. This will also allow you to monitor outcomes and receive alerts is something fails.
LikeLike