Activities of "jarrad78"

  • ABP Framework version: v9.0.4

  • UI Type: MVC

  • Database System: EF Core (MySQL)

  • Tiered (for MVC) or Auth Server Separated (for Angular): no

  • Exception message and full stack trace:

  • GITHUB Project With Error: https://github.com/jarrad1978/TestSeedProject.git

I generated sample crud page using abp studio. I then changed configuration so that Books entity is moved to tenant db instead of host db.

What I am trying to achieve

Create Books in Tenant only DB Context so that Books table does not exist in Host DB but is only created in Tenant DB and then seed initial book data into the tenant only table

What error is happening

When I attempt to run migrations for a newly created tenant the migration process fails when data seeding commences. The data seeder is attempting to check the Book repository for records in the host db but it doesn't exist there. It is only present in Tenant DB Context.

Steps taken so far

1.) Removed Books Entity configuration from TestSeedProjectDbContextBase (DbSet and builder.Entity config) 2.) Added Books Entity configuration to TestSeedProjectTenantDbContext (DbSet and builder.Entity config) 3.) Generated Host and Tenant DB Migrations 4.) Modified BookStoreDataSeederContributor and injected ICurrentTenant so that I can skip seeding for HOST. 4.) Executed Data Seeder (Worked as Expected and skipped host DB)
5.) Start web application, 6.) login as host admin, 7.) create a new tenant, 8.) set tenant DB connection string in SaaS module. 9.) Rerun Migrations for new Tenant and Data Seeding for book fails with an error indicating that it is attempting to get the Books record count from the host DB. (Exception is included at the bottom of support ticket)

Steps to replicate

1.) Download github project (link above) 2.) Update references to AbpLicenseCode with a valid key 3.) run compose.yml to start backend services 4.) start web project, login as host admin 5.) navigate to SaaS->Tenants and attempt to apply database migrations for tenant.

The only thing I changed was to try to configure the sample crud Books entity as a Tenant only table, the DB migrations are applied successfully and work as expected. (AppBooks created in tenant DB and not host DB - expected)

The Data Seeder does not function as expected, I would expect that the Data Seeder would not try to resolve the Book Repository via the HOST DB since Book is configured in TenantDb Context only.

Exception

This is the exception thrown, it's clear that it's attempting to seed the data in the HOST DB instead of the TenantDB.

current tenant: 3a186f02-97f1-9502-996f-12b851942753

[11:11:26 DBG] Executing HealthCheck collector HostedService. [11:11:26 INF] Start processing HTTP request GET https://localhost:44365/health-status [11:11:26 INF] Sending HTTP request GET https://localhost:44365/health-status [11:11:26 INF] Request starting HTTP/1.1 GET https://localhost:44365/health-status - null null [11:11:26 DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessRequestContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ResolveRequestUri. [11:11:26 DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ResolveRequestUri. [11:11:26 DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+InferEndpointType. [11:11:26 DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by Volo.Abp.Account.Web.Pages.Account.OpenIddictImpersonateInferEndpointType. [11:11:26 DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateTransportSecurityRequirement. [11:11:26 DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ValidateHostHeader. [11:11:26 DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ValidateHostHeader. [11:11:26 DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+EvaluateValidatedTokens.
[11:11:26 DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromAuthorizationHeader. [11:11:26 DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromBodyForm. [11:11:26 DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.AspNetCore.OpenIddictValidationAspNetCoreHandlers+ExtractAccessTokenFromQueryString. [11:11:26 DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was successfully processed by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens.
[11:11:26 DBG] The event OpenIddict.Validation.OpenIddictValidationEvents+ProcessAuthenticationContext was marked as rejected by OpenIddict.Validation.OpenIddictValidationHandlers+ValidateRequiredTokens. [11:11:27 ERR] Failed executing DbCommand (219ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT COUNT(*) FROM AppBooks AS a [11:11:27 ERR] An exception occurred while iterating over the results of a query for context type 'TestSeedProject.EntityFrameworkCore.TestSeedProjectTenantDbContext'. MySqlConnector.MySqlException (0x80004005): Table 'testseedproject.appbooks' doesn't exist at MySqlConnector.Core.ServerSession.ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/Core/ServerSession.cs:line 1081 at MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in //src/MySqlConnector/Core/ResultSet.cs:line 37 at MySqlConnector.MySqlDataReader.ActivateResultSet(CancellationToken cancellationToken) in //src/MySqlConnector/MySqlDataReader.cs:line 131 at MySqlConnector.MySqlDataReader.InitAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, IDictionary2 cachedProcedures, IMySqlCommand command, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:line 487 at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/CommandExecutor.cs:line 56 at MySqlConnector.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:line 357 at MySqlConnector.MySqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:line 350 at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() MySqlConnector.MySqlException (0x80004005): Table 'testseedproject.appbooks' doesn't exist at MySqlConnector.Core.ServerSession.ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/ServerSession.cs:line 1081 at MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in /_/src/MySqlConnector/Core/ResultSet.cs:line 37 at MySqlConnector.MySqlDataReader.ActivateResultSet(CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:line 131 at MySqlConnector.MySqlDataReader.InitAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, IDictionary2 cachedProcedures, IMySqlCommand command, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/MySqlDataReader.cs:line 487 at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/Core/CommandExecutor.cs:line 56 at MySqlConnector.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/MySqlCommand.cs:line 357 at MySqlConnector.MySqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) in //src/MySqlConnector/MySqlCommand.cs:line 350 at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() [11:11:27 ERR] Table 'testseedproject.appbooks' doesn't exist MySqlConnector.MySqlException (0x80004005): Table 'testseedproject.appbooks' doesn't exist at MySqlConnector.Core.ServerSession.ReceiveReplyAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) in //src/MySqlConnector/Core/ServerSession.cs:line 1081 at MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in //src/MySqlConnector/Core/ResultSet.cs:line 37 at MySqlConnector.MySqlDataReader.ActivateResultSet(CancellationToken cancellationToken) in //src/MySqlConnector/MySqlDataReader.cs:line 131 at MySqlConnector.MySqlDataReader.InitAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, IDictionary2 cachedProcedures, IMySqlCommand command, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlDataReader.cs:line 487 at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/Core/CommandExecutor.cs:line 56 at MySqlConnector.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:line 357 at MySqlConnector.MySqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:line 350 at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) at Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func4 operation, Func4 verifySucceeded, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.MoveNextAsync() at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleAsync[TSource](IAsyncEnumerable1 asyncEnumerable, CancellationToken cancellationToken) at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleAsync[TSource](IAsyncEnumerable1 asyncEnumerable, CancellationToken cancellationToken) at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository2.GetCountAsync(CancellationToken cancellationToken) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at TestSeedProject.TestSeedProjectDataSeederContributor.SeedAsync(DataSeedContext context) in D:\Workspace\DevTest\TestSeedProject\src\TestSeedProject.Domain\BookStoreDataSeederContributor.cs:line 33 at Volo.Abp.Data.DataSeeder.SeedAsync(DataSeedContext context) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed) at TestSeedProject.Data.TestSeedProjectTenantDatabaseMigrationHandler.MigrateAndSeedForTenantAsync(Guid tenantId, String adminEmail, String adminPassword) in D:\Workspace\DevTest\TestSeedProject\src\TestSeedProject.Domain\Data\TestSeedProjectTenantDatabaseMigrationHandler.cs:line 115

[11:11:27 INF] Request finished HTTP/2 POST https://localhost:44365/api/saas/tenants/3a186f02-97f1-9502-996f-12b851942753/apply-database-migrations - 204 null null 25788.7567ms

Good Afternoon, I am facing an issue with my project that uses a Customized login method.

I have implemented a customized login flow using the solution provided in https://github.com/abpframework/abp-samples/tree/master/SignInWithoutSpecifyingTenant. In our solution, we have enabled Chat Module and CMSKit Module.

Everything was working great until updating the framework to v. 5.3.4, after updating the framework to the new version, we faced issue as seen in support ticket #3689. But there is also one other issue that has arisen since update to 5.3.4 which seems to be related to 3689. All of our automated tests now fail although business logic itself is the same.

When we attempt to execute automated tests, an AggregateException error is thrown. I have created a private repo so please let me know whom to add so you can access to have a look. We applied patch suggested in ticket #3689 and original login issue was solved but test failure is still an issue.

  • ABP Framework version: v5.3.4

  • UI type: MVC

  • DB provider: EF Core

  • Tiered (MVC) or Identity Server Separated (Angular): no

  • Exception message and stack trace: ` ShopLogic.Samples.SampleAppServiceTests.Initial_Data_Should_Contain_Admin_User Source: SampleAppServiceTests.cs line 23 Duration: 1 ms

    Message:  Volo.Abp.AbpInitializationException : An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module ShopLogic.ShopLogicTestBaseModule, ShopLogic.TestBase, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: More than one error has occurred while triggering the event: Volo.Abp.Domain.Entities.Events.Distributed.EntityUpdatedEto1[Volo.Abp.Users.UserEto] (SqliteConnection does not support nested transactions.) (SqliteConnection does not support nested transactions.). See the inner exception for details. ---- System.AggregateException : More than one error has occurred while triggering the event: Volo.Abp.Domain.Entities.Events.Distributed.EntityUpdatedEto1[Volo.Abp.Users.UserEto] (SqliteConnection does not support nested transactions.) (SqliteConnection does not support nested transactions.) -------- System.InvalidOperationException : SqliteConnection does not support nested transactions. -------- System.InvalidOperationException : SqliteConnection does not support nested transactions.

    Stack Trace:  ModuleManager.InitializeModules(ApplicationInitializationContext context) AbpApplicationBase.InitializeModules() AbpApplicationWithExternalServiceProvider.Initialize(IServiceProvider serviceProvider) AbpIntegratedTest1.ctor() ShopLogicTestBase1.ctor() ShopLogicApplicationTestBase.ctor() SampleAppServiceTests.ctor() line 17 RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean wrapExceptions) ----- Inner Stack Trace ----- EventBusBase.ThrowOriginalExceptions(Type eventType, List1 exceptions) <62 more frames...> DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) AbpDbContext1.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken) UnitOfWork.SaveChangesAsync(CancellationToken cancellationToken) UnitOfWork.CompleteAsync(CancellationToken cancellationToken) UserLookupService2.WithNewUowAsync(Func1 func) UserLookupService2.FindByIdAsync(Guid id, CancellationToken cancellationToken) CmsUserSynchronizer.HandleEventAsync(EntityUpdatedEto1 eventData) EventHandlerInvoker.InvokeAsync(IEventHandler eventHandler, Object eventData, Type eventType) EventBusBase.TriggerHandlerAsync(IEventHandlerFactory asyncHandlerFactory, Type eventType, Object eventData, List`1 exceptions, InboxConfig inboxConfig)

    (result has additional output)

    Open test log`

  • Steps to reproduce the issue:" download demo https://github.com/jarrad78shoplogic/sltest.git and try to run Automated tests. All tests fail after we upgraded from 5.2.1 to 5.3.4.

Please See related issue: #3689

Good Afternoon, I am facing an issue when using a Customized login method in my ABP.IO based project.

I have implemented a customized login flow using the solution provided in https://github.com/abpframework/abp-samples/tree/master/SignInWithoutSpecifyingTenant. In our solution, we have enabled Chat Module and CMSKit Module.

When we attempt to login as a tenant while using the incorrect password, we receive an AggregateException error as a result of the login attempt. When we remove the Chat and CMSKit modules, we receive the normal error that you are supposed to receive when an incorrect credential is used. When the modules are enabled and we remove the custom login flow, select our tenant and try to login with incorrect password, it also gives the proper error message.

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

Where can I find documentation for MVC Build Deployment guidelines for IIS server deployment type. I read that deployment documentation for various platforms was under development, is any documentation available for IIS deployments? If not, when might said documentation be available?

Check the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples, to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, please use the search on the homepage.

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

I have created simple test scenario with the following entity and child entity

Parent Entity     public class SampleTestX : FullAuditedAggregateRoot<Guid>, IMultiTenant     {         public Guid? TenantId { get; set; }         public string TestA { get; set; }         public string TestB { get; set; }         public string TestC { get; set; }         public string TestD { get; set; }

        public ICollection<SampleTestX2> samples { get; set; }

        public SampleTestX()         {

        }

        public SampleTestX(Guid id)         {             Id = id;         }

        public SampleTestX(Guid id, Guid? tenantId, string testA, string testB, string testC, string testD)         {             Id = id;             TenantId = tenantId;             TestA = testA;             TestB = testB;             TestC = testC;             TestD = testD;         }     }

Child Entity     public class SampleTestX2 : FullAuditedEntity<Guid>, IMultiTenant     {         public Guid? TenantId { get; set; }         public string SampleA { get; set; }         public string SampleB { get; set; }

        public Guid SampleTestXId { get; set; } //FK         public SampleTestX sample { get; set; } //Nav Link

        public SampleTestX2()         {

        }

        public SampleTestX2(Guid id, Guid? tenantId)         {             Id = id;             TenantId = tenantId;         }     }

app service interface:     public interface ISampleTestXAppService : ICrudAppService<SampleTestXDto, Guid, PagedAndSortedResultRequestDto, CreateSampleTestXDto, UpdateSampleTestXDto>     {         Task<SampleTestXExtendedDto> GetExtendedAsync(Guid id);     }

app service:     public class SampleTestXAppService : CrudAppService<SampleTestX, SampleTestXDto, Guid, PagedAndSortedResultRequestDto, CreateSampleTestXDto, UpdateSampleTestXDto>, ISampleTestXAppService     {         private IRepository<SampleTestX, Guid> _testRepository;         public SampleTestXAppService(IRepository<SampleTestX, Guid> testRepository) : base(testRepository)         {             _testRepository = testRepository;         }

        public virtual async Task<SampleTestXExtendedDto> GetExtendedAsync(Guid id)         {             var sampleTestX = await GetSampleTestX<SampleTestXExtendedDto>(id, true);             return sampleTestX;         }

        private async Task<TSampleTestXDtoType> GetSampleTestX<TSampleTestXDtoType>(Guid id, bool isExtended = false) where TSampleTestXDtoType : SampleTestXDto         {             var tmp = await _testRepository.GetAsync(id: id, includeDetails: isExtended);             return ObjectMapper.Map<SampleTestX, TSampleTestXDtoType>(tmp);         }     } Repo Interface:     public interface ISampleTestXRepository : IRepository<SampleTestX, Guid>     {

    }

EFCore Repo Implementation:     public class EfCoreSampleTestXRepository : EfCoreRepository<AppDbContext, SampleTestX, Guid>, ISampleTestXRepository     {         public EfCoreSampleTestXRepository(IDbContextProvider<AppDbContext> dbContextProvider) : base(dbContextProvider)         {         }

        public override async Task<IQueryable<SampleTestX>> WithDetailsAsync()         {             // Uses the extension method defined above             return (await GetQueryableAsync()).IncludeDetails();         }     }     public static class SampleTestXExtensionMethods     {         public static IQueryable<SampleTestX> IncludeDetails(this IQueryable<SampleTestX> queryable, bool include = true)         {             if (!include)             {                 return queryable;             }

            return queryable                 .Include(x=>x.samples);         }     }

I want to use CrudAppService to be able to create parent and child entity at same time. Is this possible using CrudAppService in MultiTenant scenario? I am able to successfully create the parent and child entity but the tenantId of child entity is always blank upon creation. If I were to create custom app implementation then injecting ICurrentUser would be no problem but using CrudAppService I do not see where this is possible for child entity. Am I missing something or is this not possible?

  • ABP Framework version: v4.1.1
  • UI type: Blazor
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Seperated (Angular): No
  • Exception message and stack trace: N/A
  • Steps to reproduce the issue: N/A

Is there documentation to help me understand what each Identity Server client is used for exactly? It is obvious what Blazor and Swagger clients are there for in DBMigrator appsettings.json file but I am unsure about _Web and _App. Are these two endpoints necessary in my usage scenario?

For example if I create a Blazor Project with the following configuration: abp new ExampleProject -t app-pro -u blazor

If I deploy this project to Azure App Service I will have two independent App Services to deploy, (ExampleProject.HttpApi.Host and ExampleProject.Blazor) each app service will have an independent url.

For example: ExampleProject.HttpApi.Host - https://exampleProject-Blazor.azurewebsites.net ExampleProject.Blazor - https://exampleProject-HttpApiHost.azurewebsites.net

1.) How would this be usage scenario be configured in the IdentityServer clients section below for creating the DBMigration in DBMigrator project? 2.) Are _Web and _App clients even necessary in this usage case? 3.) Do you have more detailed documentation on IdentityServer configuration specific to ABP-PRO Blazor

  "IdentityServer": {
    "Clients": {
      "**ExampleProject_Web**": {
        "ClientId": "ExampleProject_Web",
        "RootUrl": "https://localhost:44323/"
      },
      "**ExampleProject_App**": {
        "ClientId": "ExampleProject_App",
        "RootUrl": "http://localhost:4200"
      },
      "**ExampleProject_Blazor**": {
        "ClientId": "ExampleProject_Blazor",
        "RootUrl": "http://localhost:44307"
      },
      "**ExampleProject_Swagger**": {
        "ClientId": "ExampleProject_Swagger",
        "ClientSecret": "1q2w3e*",
        "RootUrl": "https://localhost:44319"
      }
    }
  }

Is the expected config for HttpApi + Blazor config as follows?

DBMigrator - appsettings.json

"IdentityServer": {
    "Clients": {
        "ExampleProject_Blazor": {
            "ClientId": "ExampleProject_Blazor",
            "RootUrl": "https://exampleProject-Blazor.azurewebsites.net"
        },
        "ExampleProject_Swagger": {
            "ClientId": "ExampleProject_Swagger",
            "ClientSecret": "1q2w3e*",
            "RootUrl": "https://exampleProject-HttpApiHost.azurewebsites.net"
        }
    }
}

ExampleProject.Blazor - appsettings.json

{
  "AuthServer": {
    "Authority": "https://exampleProject-HttpApiHost.azurewebsites.net",
    "ClientId": "ExampleProject_Blazor",
    "ResponseType": "code"
  },
  "RemoteServices": {
    "Default": {
      "BaseUrl": "https://exampleProject-HttpApiHost.azurewebsites.net"
    }
  },
  "AbpCli": {
    "Bundle": {
      "Mode": "BundleAndMinify", /* Options: None, Bundle, BundleAndMinify */
      "Name": "global",
      "Parameters": {
        "LeptonTheme.Style": "Style6", /* Options: Style1, Style2... Style6 */
        "LeptonTheme.ChangeStyleDynamically": "true"
      }
    }
  }

ExampleProject.HttpApi.Host - appsettings.json

{
"App": {
  "SelfUrl": "https://exampleProject-HttpApiHost.azurewebsites.net",
  "CorsOrigins": "https://*.ShopLogic.com,https://exampleProject-Blazor.azurewebsites.net"
},
"ConnectionStrings": {
  "Default": ".........."
},
"AuthServer": {
  "Authority": "https://exampleProject-HttpApiHost.azurewebsites.net",
  "RequireHttpsMetadata": "false"
}
"StringEncryption": {
  "DefaultPassPhrase": ".........."
},
"Settings": {
  "Volo.Abp.LeptonTheme.Style": "Style3", /* Options: Style1, Style2... Style6 */
  "Volo.Abp.LeptonTheme.Layout.MenuPlacement": "Top", /* Options: Left, Top */
  "Volo.Abp.LeptonTheme.Layout.MenuStatus": "AlwaysOpened", /* Options: AlwaysOpened, OpenOnHover */
  "Volo.Abp.LeptonTheme.Layout.Boxed": "False", /* Options: True, False */
  "Abp.Mailing.Smtp.Host": "127.0.0.1",
  "Abp.Mailing.Smtp.Port": "25",
  "Abp.Mailing.Smtp.UserName": "",
  "Abp.Mailing.Smtp.Password": "",
  "Abp.Mailing.Smtp.Domain": "",
  "Abp.Mailing.Smtp.EnableSsl": "false",
  "Abp.Mailing.Smtp.UseDefaultCredentials": "true",
  "Abp.Mailing.DefaultFromAddress": "noreply@abp.io",
  "Abp.Mailing.DefaultFromDisplayName": "ABP application"
},
"AbpLicenseCode": ".........."
}

Thanks for your feedback.

Showing 1 to 6 of 6 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 October 30, 2025, 06:33