Re: asynchronous call back and session variables.....
From: bruce barker (nospam_brubar_at_safeco.com)
Date: 03/19/04
- Next message: Tim Mulholland: "Re: list of raised events"
- Previous message: matt: "Re: TextChanged of TextBox and Click on Button"
- In reply to: Ollie: "Re: asynchronous call back and session variables....."
- Messages sorted by: [ date ] [ thread ]
Date: Fri, 19 Mar 2004 10:08:12 -0800
your callback is completing after the page render (probably after unload) so
Session is no longer valid.
-- bruce (sqlwork.com)
"Ollie" <why do they need this!!!!> wrote in message
news:uZdrIrcDEHA.3080@TK2MSFTNGP10.phx.gbl...
> so what a aafect does that have....
>
> the UpdateCallback does get called, the problem is session variables are
not
> being updated correctly.....
>
> "John Saunders" <john.saunders at SurfControl.com> wrote in message
> news:%23j0zbmcDEHA.684@tk2msftngp13.phx.gbl...
> > "Ollie" <why do they need this!!!!> wrote in message
> > news:uJIbKtbDEHA.1604@TK2MSFTNGP11.phx.gbl...
> > > I have an asp.net webservice that is called from an asp.net website,
the
> > > processes on the web service may take sometime so I call the
webservice
> > > using the asynchronous method calls, i.e. BeginXXXX(), EndXXXX()
etc...
> > >
> > > I pass a call back into the BeginXXX method so that when the operation
> has
> > > completed the call back method is called.....
> > >
> > > So in the web page it looks something like this:-
> > >
> > > private void BeginUpdateData()
> > > {
> > > AsyncCallback AsyncCallBack = new
AsyncCallback(UpdateCallback);
> > > System.IAsyncResult asyncResult =
> > > Analyser.BeginUpdateXXXX(serializedData, AsyncCallBack, null);
> > >
> > > Session["Processing"] = true;
> > > Session["ProcessingMessage"] = "Updating Entry....";
> > > Session["ProcessingRefreshTime"] = 2;
> > > Session["ProcessingRedirectPath"] = Request.Path;
> > > Response.Redirect(Request.ApplicationPath +
> > > "/Analysis/Processing.aspx", true);
> > > }
> > >
> > > public void UpdateCallback(IAsyncResult ar)
> > > {
> > > EndUpdateData(ar);
> > > }
> > >
> > > private void EndUpdateData(System.IAsyncResult asyncResult)
> > > {
> > > string data = null;
> > > data = Analyser.EndUpdateXXXX(asyncResult);
> > >
> > > Session["Processing"] = null;
> > > }
> > >
> > > And the processing.aspx page_load is:
> > >
> > > private void Page_Load(object sender, System.EventArgs e)
> > > {
> > > if(Session["Processing"] == null)
> > > {
> > > Session["ProcessingMessage"] = null;
> > > Session["ProcessingRefreshTime"] = null;
> > >
> > > string redirectPath =
> > > (string)Session["ProcessingRedirectPath"];
> > > Session["ProcessingRedirectPath"] = null;
> > >
> > > Response.Redirect(redirectPath);
> > > }
> > >
> > > string message = (string)Session["ProcessingMessage"];
> > > int refreshTime = (int)Session["ProcessingRefreshTime"];
> > >
> > > Response.AddHeader("Refresh", refreshTime.ToString());
> > > lbProcessing.Text = message;
> > > }
> > >
> > >
> > > The problem is that when the asynchronous call back is called it
clears
> > the
> > > session variable "Processing", BUT next time the processing.aspx page
> > > refreshes the session variable still exists with the value 'true' to
> > > therefore it does not redirect. I am using out-of-proc session
> management
> > > using StateServer
> > >
> > > Have I made a simple mistake?
> >
> > Yup.
> >
> > Once a page is rendered to the users browser, the page is destroyed. So,
> > after your page is destroyed, your UpdateCallback gets called...
> > --
> > John Saunders
> > John.Saunders at SurfControl.com
> >
> >
>
>
- Next message: Tim Mulholland: "Re: list of raised events"
- Previous message: matt: "Re: TextChanged of TextBox and Click on Button"
- In reply to: Ollie: "Re: asynchronous call back and session variables....."
- Messages sorted by: [ date ] [ thread ]