Как отправить новый ответ с помощью response.redirect после отправки ответа один раз за один постбэк в asp.net - PullRequest
0 голосов
/ 18 декабря 2009

Я показываю загрузочный div на странице init, используя response.write и response.flush. пока страница времени не будет полностью отображена. как это:

Page.Response.Write(loadinghtmlstring);
Page.Response.Flush();

Я перенаправляю на страницу с ошибкой, если какая-либо ошибка возникает при попытке catch.

try
{}
 catch (WrapedException wre)
        {
            BaseUserControl.StoreException = wre;
            Response.Redirect(base.ErrorPagePath, false);
        }
        catch (Exception ex)
        {
            BaseUserControl.StoreException = new WrapedException(ex.Message, ex);
            Response.Redirect(base.ErrorPagePath, false);
        }

Теперь, если какая-либо ошибка возникает на моей странице после отображения загрузки div Я получил ошибку, которая говорит:

Невозможно перенаправить после заголовков HTTP были отправлены.

Ответы [ 2 ]

1 голос
/ 18 декабря 2009

Это происходит потому, что вы пишете и очищаете ответ (путем очистки записываемых заголовков). Перенаправление необходимо перезаписать эти заголовки и не может на этом этапе. После того как вы позвонили Response.Flush(), вы не сможете использовать Response.Redirect().

Вы можете сделать следующее:

try
{
    Response.Write("abc");
}
catch (WrapedException wre)
{
    BaseUserControl.StoreException = wre;
    Response.Redirect(base.ErrorPagePath, false);
}
catch (Exception ex)
{
    BaseUserControl.StoreException = new WrapedException(ex.Message, ex);
    Response.Redirect(base.ErrorPagePath, false);
}
finally
{
    Response.Flush();
}
1 голос
/ 18 декабря 2009

Я знаю, что это не совсем то, что вы ищете в ответе ... но почему бы вам не использовать Javascript для диалога загрузчика? YUI имеет отличный диалог загрузки здесь , и я уверен, что jquery также имеет его. Это потребует сложности, связанной с наличием на странице сгенерированного загрузчика ASP.NET, и может решить проблемы с ошибками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...