mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-25 02:44:56 +08:00
Force a database commit when redirecting in workflow. (#7693)
Fixes #7690
This commit is contained in:
@@ -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");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user