Activities of "zhongfang"

Waiting for you good news!

Any progress?

What's the best practice of globle exception handler in Blazor Server Side application?

It seem that 'app.UseErrorPage()' is not working.

If you're creating a bug/problem report, please include followings:

  • ABP Framework version: v5.1.3
  • UI type: Blazor
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Exception message and stack trace:
  • Steps to reproduce the issue:"

Oh, I add above global features. Then I rebuild the solutions. Run ef migrations add again. still got nothing.

[DependsOn(typeof(CmsKitProDomainSharedModule))]
    public class Id5DomainSharedModule : AbpModule
    {
        public override void PreConfigureServices(ServiceConfigurationContext context)
        {
            Id5GlobalFeatureConfigurator.Configure();
            Id5ModuleExtensionConfigurator.Configure();
        }

        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            Configure<AbpVirtualFileSystemOptions>(options =>
            {
                options.FileSets.AddEmbedded<Id5DomainSharedModule>();
            });

            Configure<AbpLocalizationOptions>(options =>
            {
                options.Resources
                    .Add<Id5Resource>("en")
                    .AddBaseTypes(typeof(AbpValidationResource))
                    .AddVirtualJson("/Localization/Id5");

                options.DefaultResourceType = typeof(Id5Resource);
            });

            Configure<AbpExceptionLocalizationOptions>(options =>
            {
                options.MapCodeNamespace("Id5", typeof(Id5Resource));
            }); 
            
            GlobalFeatureManager.Instance.Modules.CmsKit(cmsKit =>
            {
                cmsKit.EnableAll();
            });

            GlobalFeatureManager.Instance.Modules.CmsKitPro(cmsKitPro =>
            {
                cmsKitPro.EnableAll();
            });
        }
public partial class AddTables_CmsKitPro_Enabled : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {

        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {

        }
    }
  • ABP Framework version: v5.1.3
  • UI type: Blazor (Server Side
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Exception message and stack trace:
  • Steps to reproduce the issue:"
  • Add CmsKit module with ABP Suite 5.1.3
  • Run command
PS D:\abp-change\saas-admin\src\Yee.Change.Id5.EntityFrameworkCore> dotnet ef migrations add AddTables_CmsKitPro --context Id5DbContext
Build started...
Build succeeded.
Done. To undo this action, use 'ef migrations remove'
PS D:\abp-change\saas-admin\src\Yee.Change.Id5.EntityFrameworkCore> dotnet ef database update --context Id5DbContext
Build started...
Build succeeded.
Applying migration '20220209034057_Added_Pro_Module_52534'.
Applying migration '20220209035638_AddTables_CmsKitPro'.
Done.
  • Can not find CmsKit tables in database
public partial class AddTables_CmsKitPro : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {

        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {

        }
    }
public abstract class Id5DbContextBase<TDbContext> : AbpDbContext<TDbContext>
        where TDbContext : DbContext
    {
        public Id5DbContextBase(DbContextOptions<TDbContext> options)
            : base(options)
        {

        }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            /* Include modules to your migration db context */

            builder.ConfigurePermissionManagement();
            builder.ConfigureSettingManagement();
            builder.ConfigureBackgroundJobs();
            builder.ConfigureAuditLogging();
            builder.ConfigureIdentityPro();
            builder.ConfigureIdentityServer();
            builder.ConfigureFeatureManagement();
            builder.ConfigureLanguageManagement();
            builder.ConfigureSaas();
            builder.ConfigureTextTemplateManagement();
            builder.ConfigureBlobStoring();

            /* Configure your own tables/entities inside here */

            //builder.Entity<YourEntity>(b =>
            //{
            //    b.ToTable(Id5Consts.DbTablePrefix + "YourEntities", Id5Consts.DbSchema);
            //    b.ConfigureByConvention(); //auto configure for the base class props
            //    //...
            //});

            //if (builder.IsHostDatabase())
            //{
            //    /* Tip: Configure mappings like that for the entities only available in the host side,
            //     * but should not be in the tenant databases. */
            //}
            builder.ConfigureCmsKitPro();
            builder.ConfigureCmsKit();
        }
    }
[DependsOn(
        typeof(Id5DomainModule),
        typeof(AbpIdentityProEntityFrameworkCoreModule),
        typeof(AbpIdentityServerEntityFrameworkCoreModule),
        typeof(AbpPermissionManagementEntityFrameworkCoreModule),
        typeof(AbpSettingManagementEntityFrameworkCoreModule),
        typeof(AbpEntityFrameworkCoreSqlServerModule),
        typeof(AbpBackgroundJobsEntityFrameworkCoreModule),
        typeof(AbpAuditLoggingEntityFrameworkCoreModule),
        typeof(AbpFeatureManagementEntityFrameworkCoreModule),
        typeof(LanguageManagementEntityFrameworkCoreModule),
        typeof(SaasEntityFrameworkCoreModule),
        typeof(TextTemplateManagementEntityFrameworkCoreModule),
        typeof(BlobStoringDatabaseEntityFrameworkCoreModule)
    )]
    [DependsOn(typeof(CmsKitProEntityFrameworkCoreModule))]
    public class Id5EntityFrameworkCoreModule : AbpModule
    {
        public override void PreConfigureServices(ServiceConfigurationContext context)
        {
            Id5EfCoreEntityExtensionMappings.Configure();
        }

        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            context.Services.AddAbpDbContext<Id5DbContext>(options =>
            {
                /* Remove "includeAllEntities: true" to create
                 * default repositories only for aggregate roots */
                options.AddDefaultRepositories(includeAllEntities: true);
            });

            context.Services.AddAbpDbContext<Id5TenantDbContext>(options =>
            {
                /* Remove "includeAllEntities: true" to create
                 * default repositories only for aggregate roots */
                options.AddDefaultRepositories(includeAllEntities: true);
            });

            Configure<AbpDbContextOptions>(options =>
            {
                /* The main point to change your DBMS.
                 * See also Id5DbContextFactoryBase for EF Core tooling. */
                options.UseSqlServer();
            });
        }
    }

Yes, I call InsertAsync in try catch.

I must InsertAsnyc first, then continue with throw exception.

How to do?

After I upgrade to the 5.1.3. It is OK, now.

  • ABP Framework version: v5.1.3
  • UI type: Blazor (Server Side)
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Exception message and stack trace: no exception. and I can find the success in Serilog out put.
  • Steps to reproduce the issue:"
  • Insert into repository by code
Serilog.Log.Information("开始登记取消关注的情况。Open Id:" + openId);
            ISubscribeUserRepository subscribeUserRepository = this.LazyServiceProvider.LazyGetRequiredService<ISubscribeUserRepository>();

            if (subscribeUserRepository == null)
            {
                throw new Exception("没有找到 ISubscribeUserRepository。");
            }

            SubscribeUser subscribeUser = (await subscribeUserRepository.GetQueryableAsync()).FirstOrDefault(p => p.OpenId == openId && p.TenantId == tenantId);

            if (subscribeUser == null)
            {
                subscribeUser = new SubscribeUser()
                {
                    OpenId = openId,
                    Nick = "unknown",
                    UnSubscribedOn = DateTime.Now,
                    SubscribedTimes = 1,
                    UnSubscribedTimes = 1,
                    WeChatAppId = this.CurrentWeChatApp.WeChatApp.Result.Id,
                    TenantId = tenantId
                };

                subscribeUser = await subscribeUserRepository.InsertAsync(subscribeUser, autoSave: true);
                Serilog.Log.Information("成功新增了取消关注的情况。Open Id:" + openId + ",创建时间:" + subscribeUser.CreationTime + "TenantId:" + tenantId);
            }
            else
            {
                subscribeUser.UnSubscribedOn = DateTime.Now;
                subscribeUser.UnSubscribedTimes = subscribeUser.UnSubscribedTimes + 1;

                await subscribeUserRepository.UpdateAsync(subscribeUser, autoSave: true);
                Serilog.Log.Information("成功更新了取消关注的情况。Open Id:" + openId);
            }

            return true;
  • In Serilog output, above operation of InsertAsync is success.
[23:11:16 INF] 开始登记取消关注的情况。Open Id:oZKzr0_vqPUa5e_DpS5gusyU7MGI
[23:11:16 DBG] Added 0 entity changes to the current audit log
[23:11:16 INF] 成功新增了取消关注的情况。Open Id:oZKzr0_vqPUa5e_DpS5gusyU7MGI,创建时间:2022/2/8 下午11:11:16TenantId:55eea838-1079-84e1-a90a-39fe122f8fb5
[23:11:16 DBG] Added 0 entity changes to the current audit log
  • but I can not find the data in database which should has been insert async successfully.
  • ABP Framework version: v5.1.1
  • UI type: Blazor (Server Side)
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no, It is a module application.
  • Exception message and stack trace:
  • Steps to reproduce the issue:"
  • Create a new Entity
  • Input many simple fields
  • Click ' Save and Generate;
  • Then , I will get exception as below. ( At commond line which start the ABP Suite)
Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'startIndex')
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'startIndex')
   at System.Globalization.CompareInfo.IndexOf(String source, String value, Int32 startIndex, Int32 count, CompareOptions options)
   at System.String.IndexOf(String value, Int32 startIndex, Int32 count, StringComparison comparisonType)
   at System.String.IndexOf(String value, Int32 startIndex, StringComparison comparisonType)
   at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Commands.EntityGenerateCommand.F1AAu43krY(String  , String  , String  )
   at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Commands.EntityGenerateCommand.IBpAlr5Quy(String  , String  , Boolean  )
   at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Commands.EntityGenerateCommand.MYcAWPr5GZ(String  , String  , Boolean  , DatabaseProvider  )
   at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Commands.EntityGenerateCommand.yreAdjUhWH(String  , DatabaseProvider  )
   at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Commands.EntityGenerateCommand.cqSAJdEgpq()
   at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Commands.EntityGenerateCommand.ExecuteAsync(CrudPageCommandOptions options)
   at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.CommandManager.ExecuteAllAsync(CrudPageCommandOptions options)
   at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Commands.CrudPageGenerator.GenerateAsync(EntityModel entity, Solution solution)
   at Volo.Abp.Suite.Controllers.CrudPageGeneratorController.SaveAndGenerateEntityAsync(Guid solutionId, EntityModel entity)
   at lambda_method2055(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

I found many result articles by search Google and Baidu. And I tried out them. But I failed.

Now, you resolved my question.

Thank you.

Maybe you can add above content to UserGuide.

Showing 151 to 160 of 185 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.1.0-preview. Updated on December 08, 2025, 08:24
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.