我正在使用response.write和response.flush在页面init上显示一个加载div 直到时间页面完全呈现。 像这样:
Page.Response.Write(loadinghtmlstring);
Page.Response.Flush();
如果通过try 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标头后重定向 已发送。
答案 0 :(得分:1)
我知道这可能不完全是你在答案中寻找的东西......但是你为什么不在你的装载机对话框中使用Javascript? YUI有一个很好的加载对话框here,我相信jquery也有一个。这将使得在页面上使用ASP.NET生成的加载器变得复杂,并且可以解决您的错误问题。
答案 1 :(得分:1)
这种情况正在发生,因为您正在编写并刷新响应(通过刷新标头写入)。重定向需要覆盖这些标头,此时不能。拨打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();
}