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.Collections.Generic;
using System.Linq; using Orchard.Data;
using Orchard.Localization; using Orchard.Localization;
using Orchard.Workflows.Models; using Orchard.Workflows.Models;
using Orchard.Workflows.Services; using Orchard.Workflows.Services;
@@ -7,9 +7,11 @@ using Orchard.Workflows.Services;
namespace Orchard.Workflows.Activities { namespace Orchard.Workflows.Activities {
public class RedirectActivity : Task { public class RedirectActivity : Task {
private readonly IWorkContextAccessor _wca; private readonly IWorkContextAccessor _wca;
private readonly ITransactionManager _tm;
public RedirectActivity(IWorkContextAccessor wca) { public RedirectActivity(IWorkContextAccessor wca, ITransactionManager tm) {
_wca = wca; _wca = wca;
_tm = tm;
T = NullLocalizer.Instance; T = NullLocalizer.Instance;
} }
@@ -26,6 +28,11 @@ namespace Orchard.Workflows.Activities {
public override IEnumerable<LocalizedString> Execute(WorkflowContext workflowContext, ActivityContext activityContext) { public override IEnumerable<LocalizedString> Execute(WorkflowContext workflowContext, ActivityContext activityContext) {
var url = activityContext.GetState<string>("Url"); 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); _wca.GetContext().HttpContext.Response.Redirect(url);
yield return T("Done"); yield return T("Done");
} }