mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-24 01:49:12 +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.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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user