How to know if a redirect has been done?

P

Peter Row

Hi,

I am writing a DLL in VB.NET that implements IHttpHandler.ProcessRequest.
This code calls a sub and I need to know if that sub did a response redirect
or not.

Specifically I need to know that either the sub did a redirect or a specific
value
was specified in the URL. If neither a redirect was done and a certain value
was
not specified in the URL then I need to throw an error. Check for the query
string value is easy but how do I know if a redirect was done?

Any help much appreciated.
Regards,
Peter Row
 
J

John Timney \(Microsoft MVP\)

Cant you just add a param to the querystring indicating that it was part of
a redirect request ie. redirected=true. Your checking the querystring
anyway

--
Regards

John Timney (Microsoft ASP.NET MVP)
----------------------------------------------
<shameless_author_plug>
Professional .NET for Java Developers with C#
ISBN:1-861007-91-4
Professional Windows Forms
ISBN: 1861005547
Professional JSP 2nd Edition
ISBN: 1861004958
Professional JSP
ISBN: 1861003625
Beginning JSP Web Development
ISBN: 1861002092
</shameless_author_plug>
 
P

Peter Row

Hi,

No I can't because the redirect is made and then the code that runs after
the .Redirect line
needs to know if a redirect statement has been made.

Therefore if the actual redirect has not actually taken place yet it's
params won't be available.

Anybody else have any thoughts?

Regards,
Peter Row
 
J

John Timney \(Microsoft MVP\)

you could always put somthing in the session to say a redirect occured....

--
Regards

John Timney (Microsoft ASP.NET MVP)
----------------------------------------------
<shameless_author_plug>
Professional .NET for Java Developers with C#
ISBN:1-861007-91-4
Professional Windows Forms
ISBN: 1861005547
Professional JSP 2nd Edition
ISBN: 1861004958
Professional JSP
ISBN: 1861003625
Beginning JSP Web Development
ISBN: 1861002092
</shameless_author_plug>
----------------------------------------------
 
P

Peter Row

Hi,

Hmmm.... not a bad thought, however in my app sessions are disabled.
Isn't there some ASP object with some property or something available that
tells you if a redirect is immanent?

Regards,
Peter Row
 
J

John Timney \(Microsoft MVP\)

A redirect is really nothing but an instruction to the browser to change its
address location and request a different page, hence the suggestion to add
something to the URL the client is about to redirect too as a means of
identifying that the redirect occured and re-entered the ISAPI pipeline. So
you could detect it on the way back in and then throw your error.

However, if your working in the ISAPI Pipeline via handlers anyway, you
might want to take a look at the HttpWorkerRequest.EndOfSendNotification
delegate, this occurs when a response is complete - in theory if you issue a
response.redirect and a response.end then this should action as your
response terminates and you may be able to add a means of detecting your
redirection via this.

http://authors.aspalliance.com/aspxtreme/sys/Web/httpworkerrequestendofsendn
otificationclass.aspx

Never tried it mind you.....

--
Regards

John Timney (Microsoft ASP.NET MVP)
----------------------------------------------
<shameless_author_plug>
Professional .NET for Java Developers with C#
ISBN:1-861007-91-4
Professional Windows Forms
ISBN: 1861005547
Professional JSP 2nd Edition
ISBN: 1861004958
Professional JSP
ISBN: 1861003625
Beginning JSP Web Development
ISBN: 1861002092
</shameless_author_plug>
----------------------------------------------
 
P

Peter Row

Hi,

In my case it is the later. I issue a redirect but before that gets sent to
the users browser for them to request; the rest of the response
completes first. And it is here I need to know if a redirect has been issued
which at the end of the response will be sent to the users
browser and hence cause another request.

However I have been having a bit of a brain guff!
I have an Asp wrapper class which has a RedirectSafely() method to get
around the phaff needed to stop ThreadAbortedExceptions
from occuring. Therefore since I always call this instead of
Response.Redirect directly all I need to do is set a private member
variable flag to indicate it has been called. My implementation of
IHttpHandler.ProcessRequest can then check this and raise the
appropriate error when RedirectNotDone AndAlso QueryString("XXX") = ""

Thanks for taking time to think it over any way.
Regards,
Peter Row
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,022
Latest member
MaybelleMa

Latest Threads

Top