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:
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
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
This can be a simpler solution https://world.episerver.com/blogs/Quan-Mai/Dates/2019/10/configuring-the-redirect-url-for-commerce-migration-page-/
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