defsteph / EPiFocalPoint

Focal point based image cropping for EPiServer using ImageResizing.NET
MIT License
9 stars 10 forks source link

Initialization error #10

Closed jstemerdink closed 7 years ago

jstemerdink commented 7 years ago

We regularly get an initialization error for the localization.

ERROR [1] EPiServer.Framework.Initialization.InitializationEngine.InitializeModules - Initialize action failed for 'Initialize on class ImageResizer.Plugins.EPiFocalPoint.FocalPointInitialization ... System.InvalidOperationException: Collection was modified; enumeration operation may not execute. ...
at EPiServer.Framework.Localization.ProviderBasedLocalizationService.ProviderList_CollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)

I it fixed by loading the localizations when the init is completed and not to insert it but to append it. Or maybe one of the two is enough.

private static LocalizationService localizationService;
 public void Initialize(InitializationEngine context) {
      localizationService = context.Locate.Advanced.GetInstance<LocalizationService>() as ProviderBasedLocalizationService;

      // Initialize the provider after the initialization is complete.
      context.InitComplete += this.InitComplete;            
      InitializeEventHooks(context);
}
private void InitComplete(object sender, EventArgs e)
{
    InitializeLocalizations();
}

private static void InitializeLocalizations() {
    var providerBasedLocalizationService = localizationService as ProviderBasedLocalizationService;
    if(providerBasedLocalizationService != null) {
        var localizationProviderInitializer = new EmbeddedXmlLocalizationProviderInitializer();
        var localizationProvider = localizationProviderInitializer.GetInitializedProvider(LocalizationProviderName, typeof(FocalPointInitialization).Assembly);
    ////providerBasedLocalizationService.Providers.Insert(0, localizationProvider);
    providerBasedLocalizationService.Providers.Add(localizationProvider);
    }
}