The purpose of this article is to show how to get progress notifications of current web service progress. This will be achieved by using AJAX enabled web page, async call to web service and some easy CSS trick to display progress bar. This article also shows how to manage state of web service.
Look at the web service code. To manage state of a web service, we use a class named
Cache object. Values are stored in
Cache with unique ID.
public class ProgressValues
public bool AbortPressed = false;
public int step = 0;
public int value = 0;
ProgressValues pw = new ProgressValues();
Context.Cache[UID] = pw;
Web page has an AJAX Timer which is disabled by default and starts tick when user presses the start button and also has AJAX
UpdatePanel to display progress bar, controls and
GridView without full page postbacks.
When user clicks "Start Process" button we make async execution of a web service and pass values of
Session object by the following lines of code:
MyService.Test ts = new MyService.Test();
my_ar = ts.BeginGo(UID, steps, values, null, null);
Session["my_ar"] = my_ar;
When tick event occurs, we get
Session and update controls with the following lines of code:
IAsyncResult my_ar = (IAsyncResult)Session["my_ar"];
pw = ts.GetProcessValues(Session["WebServiceUID"].ToString());
Using the Code
First of all, you need Microsoft AJAX installed on your web server. Second, you need to compile/deploy/start
TestService project into your web server, then add Web References to "
Test project" with name
MyService. If you do this, then
Proxy class for your service will exist and you can use this
proxy class in
- 6th August, 2008: Initial post