Force a database commit when redirecting in workflow. (#7693)

Fixes #7690
This commit is contained in:
Epitomy
2017-05-12 17:03:22 +01:00
committed by Sébastien Ros
parent bca5aee822
commit 285857037c

View File

@@ -1,5 +1,5 @@
using System.Collections.Generic;
using System.Linq;
using Orchard.Data;
using Orchard.Localization;
using Orchard.Workflows.Models;
using Orchard.Workflows.Services;
@@ -7,9 +7,11 @@ using Orchard.Workflows.Services;
namespace Orchard.Workflows.Activities {
public class RedirectActivity : Task {
private readonly IWorkContextAccessor _wca;
private readonly ITransactionManager _tm;
public RedirectActivity(IWorkContextAccessor wca) {
public RedirectActivity(IWorkContextAccessor wca, ITransactionManager tm) {
_wca = wca;
_tm = tm;
T = NullLocalizer.Instance;
}
@@ -26,6 +28,11 @@ namespace Orchard.Workflows.Activities {
public override IEnumerable<LocalizedString> Execute(WorkflowContext workflowContext, ActivityContext activityContext) {
var url = activityContext.GetState<string>("Url");
// Redirect is going to terminate the request, which will cause any pending updates to get rolled back,
// so we force a commit in case anything has changed
_tm.RequireNew();
_wca.GetContext().HttpContext.Response.Redirect(url);
yield return T("Done");
}