Cannot redirect after HTTP headers have been sent.

1 2 Next
Posted: 2 years ago Quote #61120
I am getting this error: Cannot redirect after HTTP headers have been sent.

This is happening when I hit the "confirm" button in the last step of the One Page Checkout. It tries to find PayPal to let the user pay and it is giving me an error about how Paypal.com couldn't be found because of a DNS issue.  I looked in my log and I see whenever this happens, the above error (Cannot redirect after HTTP headers have been sent) shows up.  How can I fix this?
This post/answer is useful
0
This post/answer is not useful

Please login or register
to vote for this post.

(click on this box to dismiss)
Posted: 2 years ago Quote #61121
I will include the stack trace and other information  as well.

Page URL:   http://wishesfromhome.com/checkout/opccompleteredirectionpayment

Referrer URL:   http://wishesfromhome.com/onepagecheckout

System.Web.HttpException (0x80004005): Cannot redirect after HTTP headers have been sent. at System.Web.HttpResponse.Redirect(String url, Boolean endResponse, Boolean permanent) at System.Web.HttpResponseWrapper.Redirect(String url, Boolean endResponse) at System.Web.Mvc.RedirectToRouteResult.ExecuteResult(ControllerContext context) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1c.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) at System.Web.Mvc.Controller.ExecuteCore() at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5() at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0() at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d() at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
This post/answer is useful
0
This post/answer is not useful

Please login or register
to vote for this post.

(click on this box to dismiss)
Posted: 2 years ago Quote #63795
Did you get a solution to this? I am having the same problem?

S
This post/answer is useful
0
This post/answer is not useful

Please login or register
to vote for this post.

(click on this box to dismiss)
Posted: 2 years ago Quote #63837
http://www.nopcommerce.com/boards/t/15460/error-with-card-save-plugin.aspx
This post/answer is useful
0
This post/answer is not useful

Please login or register
to vote for this post.

(click on this box to dismiss)
Interested in the dedicated Premium support services provided by core developers? Please visit http://www.nopcommerce.com/supportservices.aspx

Best Regards,
Andrei Mazoulnitsyn
Posted: 2 years ago Quote #64536
I too have started getting the 'Cannot redirect after HTTP headers have been sent.' error when redirecting to my payment provider.

I am unsure what I am meant to do, I have looked through the link Andrei posted above, have enabled errors but just get a white screen whilst on... http://www.sitename.com/checkout/OpcCompleteRedirectionPayment

What am I missing?

I think I started getting this on my local host version of 2.30 all of a sudden, and now still getting it on 2.40
This post/answer is useful
1
This post/answer is not useful

Please login or register
to vote for this post.

(click on this box to dismiss)
Posted: 2 years ago Quote #64537
ok... I've applied the code that Andrei referenced as his fix... however, I am failing through this else...

else
                {
                    //if·no·redirection·has·been·done·(to·a·third-party·payment·page)
                    //theoretically·it's·not·possible
                    return RedirectToRoute("CheckoutCompleted");
                }

I must have something wrong with my Payment plugin. I will look at that next.
This post/answer is useful
1
This post/answer is not useful

Please login or register
to vote for this post.

(click on this box to dismiss)
Posted: 2 years ago Quote #64556
After searching around it appears if I turn off compression I no longer get the white screen and everything works...

commonsettings.enablehttpcompression = false

Anyone got an opinion on this?
This post/answer is useful
0
This post/answer is not useful

Please login or register
to vote for this post.

(click on this box to dismiss)
Posted: 2 years ago Quote #64571
This issue is fixed in the upcoming version 2.5. See changeset 24aab2bc459e
This post/answer is useful
1
This post/answer is not useful

Please login or register
to vote for this post.

(click on this box to dismiss)
Interested in the dedicated Premium support services provided by core developers? Please visit http://www.nopcommerce.com/supportservices.aspx

Best Regards,
Andrei Mazoulnitsyn
Posted: 2 years ago Quote #64649
Ok fair enough... I thought I had copied the fix from codeplex to my version of the checkout controller but still white screened.

src/Presentation/Nop.Web/Controllers/CheckoutController.cs (view diff)

Maybe I need to apply the other fixes too.
This post/answer is useful
0
This post/answer is not useful

Please login or register
to vote for this post.

(click on this box to dismiss)
Posted: 2 years ago Quote #65315
Hi, I'm getting the same error. When I try and checkout using the PayPoint plugin, I get a blank page and an error in my Log table:

"Cannot redirect after HTTP headers have been sent."

Stepping through the code, it falls through OpcCompleteRedirectionPayment action within the CheckoutController.

This then gets down to _paymentService.PostProcessPayment(postProcessPaymentRequest);

This falls through to the PostProcessPayment method within the PayPointPaymentProcessor.cs file which builds a RemotePost and is meant to POST away to PayPoint.

Stepping through the RemotePost.Post() method, it builds up the HTML form and ends with a _httpContext.Response.End() however, it is then continuing back to the CheckoutController and doing the 2.50 fix:

if (this.Response.IsRequestBeingRedirected)
{
    //redirection has been done in PostProcessPayment
    return Content("Redirected");
}
else
{
    //if no redirection has been done (to a third-party payment page)
    //theoretically it's not possible
    return RedirectToRoute("CheckoutCompleted");
}


However, this.Response.IsRequestBeingRedirected is false so it's falling through the RedirectToRoute, causing the Log error.

Shouldn't it not even reach that point? It doesn't appear to be doing the POST at all.
This post/answer is useful
1
This post/answer is not useful

Please login or register
to vote for this post.

(click on this box to dismiss)
1 2 Next
nopCommerce on facebook