Try our conversational search powered by Generative AI!

Ha Bui
Oct 1, 2019
  3205
(3 votes)

Get rid of EPiServer Commerce Migrate redirect loop

Phew! Take 2 hours to get rids of the infinitive loop from EPiServer ECommerce after upgrade from 9.2 to 12.17!

You can Google search with: episerver commerce migration loop

Then some guys below appear:

1. https://world.episerver.com/forum/developer-forum/Episerver-Commerce/Thread-Container/2019/5/passing-thru-episervercommercemigrate-when-created-new-site-in-azure/

2. https://world.episerver.com/forum/developer-forum/Episerver-Commerce/Thread-Container/2016/10/too-many-redirects-error-in-the-browser-after-package-update/

Some good instructions but does not work for my case: MigrateRedirect -> <RequireLogin> -> Owin -> MigrateRedirect -> <RequireLogin> -> ...

You can see more in those class:

EPiServer.Commerce.Internal.Migration.MigrationInitializationModule

EPiServer.Commerce.Internal.Migration.MigrationManager

...

Okay, so how can we resolve this? Some angeles below will help:

1.  // EPiServer.Commerce.Internal.Migration.MigrationManager

public virtual void MigrateAsync()

2. IoC with StructureMap and Interceptors holy light

[InitializableModule]
[ModuleDependency(typeof(EPiServer.Commerce.Initialization.InitializationModule))]
[ModuleDependency(typeof(CmsCoreInitialization))]
internal class ContainerInitialization : IConfigurableModule, IInitializableModule

and

public void ConfigureContainer(ServiceConfigurationContext context)
{
    ...
    context.ConfigurationComplete += (o, e) =>
            {
                e.Services.Intercept<MigrationManager>((locator, defaultMigrationManager) =>
                    new MigrationManagerInterceptor(defaultMigrationManager
                            , locator.GetInstance<MigrationStore>()
                            , locator.GetInstance<MigrateActionUrlResolver>()));
            };
}

and last one:

public class MigrationManagerInterceptor : MigrationManager
    {
        private MigrationManager _defaultMigrationManager;

        public MigrationManagerInterceptor(
            MigrationManager defaultMigrationManager
            , MigrationStore migrationStore
            , MigrateActionUrlResolver migrateActionUrlResolver)
            : base(migrationStore, migrateActionUrlResolver)
        {
            _defaultMigrationManager = defaultMigrationManager;
        }

        public override void RedirectToMigrationView()
        {
            MigrateAsync();
            return;
        }
    }

Good bye redirect loop! Cheer!

// Ha Bui

Oct 01, 2019

Comments

Luc Gosso (MVP)
Luc Gosso (MVP) Oct 1, 2019 07:37 AM

Thank you for sharing, ive been struggling with this for years! 

Your solution is probably the best in history... 

My work arounds was "Log in as webadmin" before you release - not always possible

Or change in Appsetting: AutoMigrateEPiServer set to true use to work - but i know, not always applicable

Ha Bui
Ha Bui Oct 2, 2019 08:00 AM

Thank @GOSSO for your very constructive comment! I also tried some solutions as your but issue still there (sometime it works, weird)

Thank @Quan for your recap / overview solution! I also agree with you about documentation that should be better because of upgrading is very high risky, if we have not then how can motivate partner / customer upgrade to newer version?

// Ha Bui

Please login to comment.
Latest blogs
Optimizely Search and Navigation - Part 2 - Filter Tips

Introduction Continuing from Part 1 – Search Tips , today I will share the next part – filter tips. The platform versions used for this article are...

Binh Nguyen Thi | Jul 1, 2024

Integrating HubSpot CRM without the MA Connector

Have HubSpot CRM? Want to push user data into it from Optimizely? Don’t have any personalisation requirements with that data? Don’t want to pay $80...

Matt Pallatt | Jun 27, 2024

Keeping the website secure by updating external packages

Did you see the latest warning from Optimizely to update this package with a critical security warning? https://world.optimizely.com/documentation/...

Daniel Ovaska | Jun 27, 2024

Optimizely CMS image anonymization now available for Linux!

The famous image anonymization add-on for Optimizely CMS, with at least 5 downloads, is now finally available for use on Linux. Supports simultaneo...

Tomas Hensrud Gulla | Jun 25, 2024 | Syndicated blog