English 中文(简体)
How to send new response using response.redirect after sending response once in a single postback in asp.net
原标题:

I am displaying a loading div on the page init using response.write and response.flush until the time page is fully rendered . like this:

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

I am redirecting to error page if some error occurs through 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);
        }

Now if any error occurs on my page after displaying loading div I got error which says :

Cannot redirect after HTTP headers have been sent.

问题回答

I know this may not be EXACTLY what your looking for in an answer... but why don t you use Javascript for your loader dialog? YUI has a great loading dialog here and I am sure jquery also has one as well. THis would take the complexity of having an ASP.NET generated loader on the page, and may solve your error problems.

This is happening because you are writing and flushing the response (by flushing the headers get written). Redirect needs to overwrite these headers and cannot at this point. Once you have called Response.Flush(), there is no way to use a Response.Redirect().

You can do the following:

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();
}




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签