I'm cleaning up some legacy framework code and a huge amount of it is simply coding by exception. No values are checked to see if they are null, and as a result, copious amounts of exceptions are thrown and caught.
I've got most of them cleaned up, however, There are a few error / login / security related framework methods that are doing Response.Redirect and now that we are using ajax, we are getting ALOT of "Response.Redirect cannot be called in a Page callback." And I'd like to avoid this if at all possible.
Is there a way to programatically avoid this exception? I'm looking for something like
if (Request.CanRedirect)
Request.Redirect("url");
Note, this is also happening with Server.Transfer, so I'd like to be able to check if I am able to do Request.Redirect OR Server.Transfer.
Currently, its simply doing this
try
{
Server.Transfer("~/Error.aspx"); // sometimes response.redirect
}
catch (Exception abc)
{
// handle error here, the error is typically:
// Response.Redirect cannot be called in a Page callback
}
Redirect has EndResponse value is true. Response. Redirect("Default. aspx", false) means current page execution is not terminated and code written after the Response.
Response. Redirect sends an HTTP request to the browser, then the browser sends that request to the web server, then the web server delivers a response to the web browser. For example, suppose you are on the web page "UserRegister. aspx" page and it has a button that redirects you to the "UserDetail.
Response. Redirect() sends a redirection header to the client , and the client itself requests the new page while the Server. Transfer method for the current request, terminates execution of the current page and starts execution of a new page using the specified URL path of the page.
You can try
if (!Page.IsCallback)
Request.Redirect("url");
or if you dont have a Page handy...
try
{
if (HttpContext.Current == null)
return;
if (HttpContext.Current.CurrentHandler == null)
return;
if (!(HttpContext.Current.CurrentHandler is System.Web.UI.Page))
return;
if (((System.Web.UI.Page)HttpContext.Current.CurrentHandler).IsCallback)
return;
Server.Transfer("~/Error.aspx");
}
catch (Exception abc)
{
// handle it
}
I believe you can simply replace Server.Transfer()
with Response.RedirectLocation()
which works during callback.
try
{
Response.RedirectLocation("~/Error.aspx"); // sometimes response.redirect
}
catch (Exception abc)
{
// handle error here, the error is typically:
// Response.Redirect cannot be called in a Page callback
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With