We are using ASP.net Zero based on ABP 9.2.2. When opening a login page (where a tenant is already selected), an exception is thrown in the backend :
System.NotSupportedException: 'Reference metadata is not supported when deserializing constructor parameters. See type 'Abp.AspNetZeroCore.Web.Authentication.External.ExternalLoginProviderInfo'. The unsupported member type is located on type 'System.Collections.Generic.Dictionary`2[System.String,System.String]'. Path: $.AdditionalParams.$ref | LineNumber: 0 | BytePositionInLine: 284.'
How can this be solved?
We had an issue with Azure SignalR and Redis Cache in a clustered environment. I saw that we needed to upgrade to ABP 9.1.3. After upgrading and deploying our ASP.Net Zero based application, we got an error message in the Event Viewer of Windows :
Application: w3wp.exe
CoreCLR Version: 8.0.324.11423
.NET Version: 8.0.3
Description: The process was terminated due to an unhandled exception.
Exception Info: System.TypeLoadException: Could not load type 'Abp.RealTime.IOnlineClientStore1' from assembly 'Abp, Version=9.1.3.0, Culture=neutral, PublicKeyToken=null'. at Abp.Runtime.Caching.Redis.RedisCacheConfigurationExtensions.UseRedis(ICachingConfiguration cachingConfiguration, Action
1 optionsAction)
at RmoniWeb.Web.RmoniWebWebCoreModule.PreInitialize() in D:\a\1\s\src\RmoniWeb.Web.Core\RmoniWebWebCoreModule.cs:line 64
at Abp.Modules.AbpModuleManager.<>c.<StartModules>b__15_0(AbpModuleInfo module)
at System.Collections.Generic.List1.ForEach(Action
1 action)
at Abp.Modules.AbpModuleManager.StartModules()
at Abp.AbpBootstrapper.Initialize()
at Abp.AspNetCore.AbpApplicationBuilderExtensions.InitializeAbp(IApplicationBuilder app)
at Abp.AspNetCore.AbpApplicationBuilderExtensions.UseAbp(IApplicationBuilder app, Action1 optionsAction) at RmoniWeb.Web.Startup.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env, RmoniWebDbContext dbContext) in D:\a\1\s\src\RmoniWeb.Web.Host\Startup\Startup.cs:line 220 at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) at System.Reflection.MethodBaseInvoker.InvokeDirectByRefWithFewArgs(Object obj, Span
1 copyOfArgs, BindingFlags invokeAttr)
at System.Reflection.MethodBaseInvoker.InvokeWithFewArgs(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app)
at Microsoft.ApplicationInsights.AspNetCore.ApplicationInsightsStartupFilter.<>c__DisplayClass2_0.<Configure>b__0(IApplicationBuilder app)
at Microsoft.Azure.SignalR.AzureSignalRStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
at Microsoft.AspNetCore.Hosting.WebHost.BuildApplication()
at Microsoft.AspNetCore.Hosting.WebHost.StartAsync(CancellationToken cancellationToken)
at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host, CancellationToken token, String startupMessage)
at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host, CancellationToken token, String startupMessage)
at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host, CancellationToken token)
at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host)
at RmoniWeb.Web.Startup.Program.Main(String[] args) in D:\a\1\s\src\RmoniWeb.Web.Host\Startup\Program.cs:line 12
We recently enabled Entity History in our project. For most entities this seems to work properly aas intended. For (our subclassed entity of) AbpUser this logs duplicates of the audited properties (CreatorUserId, LastModifierUserId, ...) with faulty 'OriginalValue' data.
Row 3 shows the correct update from Id 663 to Id 13493 for the LastModifierUser. Rows 5-9 show faulty entries for the LastModifierUserId, where for some reason the Original Value is a string instead of a long, and does not correspond to the actual original value.
In order to debug this, I tried to subclass the EntityHistoryHelper and override CreateEntityChangeSet, and was able to verify that the returned changeset is correct. So these properties are added later in the flow, either somewhere between the call to CreateEntityChangeSet and the actual save to the db table, or during the actual save.