How to avoid "Response.Redirect cannot be called in a Page callback"
asp.net, asp.net-ajax, c#, exception, response.redirect
Solution
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
}
Problem
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 } ```