Activities of "nacho"

Hi ABP team,

We have to pass SAST (Static Application Security Testing) and DAST (Dynamic Application Security Testing) tests. SAST analyzes the source code of the application to find flaws, while DAST examines a running application from an external perspective to detect vulnerabilities. Right now we only executed SAST tests and we saw some vulnerabilities related to the framework and deployment code. I am sharing those findings with you, hope it helps to enhance the framework security (note: rename the png file to html to see the report): Once we execute the DAST tests, I can share with you the results as well. This is the solution configuration:

  • Template: app
  • Created ABP Studio Version: 0.9.23
  • Current ABP Studio Version: 0.9.25
  • Tiered: Yes
  • Multi-Tenancy: Yes
  • UI Framework: blazor-server
  • Theme: leptonx
  • Theme Style: system
  • Run Install Libs: Yes
  • Database Provider: mongodb
  • Run Db Migrator: Yes
  • Mobile Framework: none
  • Public Website: No
  • Include Tests: Yes
  • Kubernetes Configuration: Yes
  • Distributed Event Bus: none
  • Use Local References: No
  • Optional Modules:
    • TextTemplateManagement
    • LanguageManagement
    • AuditLogging
    • OpenIddictAdmin

I did an update from 9.0.4 to 9.1, but only angular packages were updated to 9.1. Nuget packages are still at 9.0.4 in .csproj files. Is that unusual?

Hi, I reported a similar issue here: https://abp.io/qa/questions/8330/3a18c2d8-4a26-20d8-d7eb-768237da6db3 And yes, it's not usual... maybe the ABP team can give us a solution or workaroud.

When changing a Master entity from multi-tenant to non muti-tenant and viceversa, change the child entity accordingly. Currently only the master is being updated, and a modification in the child entity is required to update the multi-tenant property.

Hi, one additional issue, this one related to OpenIddictDataSeedContributor: The CreateApplicationAsync() method only allows one redirectUri, but OpenID allows more than one RedirectUri. Same for the postLogoutRedirectUris...

In case It could help to update it, here is an updated implementation of the CreateApplicationAsync():

private async Task CreateApplicationAsync(
    [NotNull] string applicationType,
    [NotNull] string name,
    [NotNull] string type,
    [NotNull] string consentType,
    string displayName,
    string? secret,
    List<string> grantTypes,
    List<string> scopes,
    List<string>? redirectUris = null,
    List<string>? postLogoutRedirectUris = null,
    List<string>? permissions = null,
    string? clientUri = null,
    string? logoUri = null)
{
    if (!string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Public,
            StringComparison.OrdinalIgnoreCase))
    {
        throw new BusinessException(L["NoClientSecretCanBeSetForPublicApplications"]);
    }

    if (string.IsNullOrEmpty(secret) && string.Equals(type, OpenIddictConstants.ClientTypes.Confidential,
            StringComparison.OrdinalIgnoreCase))
    {
        throw new BusinessException(L["TheClientSecretIsRequiredForConfidentialApplications"]);
    }

    var client = await _openIddictApplicationRepository.FindByClientIdAsync(name);

    var application = new AbpApplicationDescriptor {
        ApplicationType = applicationType,
        ClientId = name,
        ClientType = type,
        ClientSecret = secret,
        ConsentType = consentType,
        DisplayName = displayName,
        ClientUri = clientUri,
        LogoUri = logoUri,
    };

    Check.NotNullOrEmpty(grantTypes, nameof(grantTypes));
    Check.NotNullOrEmpty(scopes, nameof(scopes));

    if (new[] { OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.Implicit }.All(
            grantTypes.Contains))
    {
        application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken);

        if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase))
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken);
            application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.CodeToken);
        }
    }

    if (!redirectUris.IsNullOrEmpty() || !postLogoutRedirectUris.IsNullOrEmpty())
    {
        application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Logout);
    }

    var buildInGrantTypes = new[] {
        OpenIddictConstants.GrantTypes.Implicit, OpenIddictConstants.GrantTypes.Password,
        OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.ClientCredentials,
        OpenIddictConstants.GrantTypes.DeviceCode, OpenIddictConstants.GrantTypes.RefreshToken
    };

    foreach (var grantType in grantTypes)
    {
        if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode)
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode);
            application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Code);
        }

        if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode ||
            grantType == OpenIddictConstants.GrantTypes.Implicit)
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Authorization);
        }

        if (grantType == OpenIddictConstants.GrantTypes.AuthorizationCode ||
            grantType == OpenIddictConstants.GrantTypes.ClientCredentials ||
            grantType == OpenIddictConstants.GrantTypes.Password ||
            grantType == OpenIddictConstants.GrantTypes.RefreshToken ||
            grantType == OpenIddictConstants.GrantTypes.DeviceCode)
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Token);
            application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Revocation);
            application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Introspection);
        }

        if (grantType == OpenIddictConstants.GrantTypes.ClientCredentials)
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials);
        }

        if (grantType == OpenIddictConstants.GrantTypes.Implicit)
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Implicit);
        }

        if (grantType == OpenIddictConstants.GrantTypes.Password)
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.Password);
        }

        if (grantType == OpenIddictConstants.GrantTypes.RefreshToken)
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.RefreshToken);
        }

        if (grantType == OpenIddictConstants.GrantTypes.DeviceCode)
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.GrantTypes.DeviceCode);
            application.Permissions.Add(OpenIddictConstants.Permissions.Endpoints.Device);
        }

        if (grantType == OpenIddictConstants.GrantTypes.Implicit)
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdToken);
            if (string.Equals(type, OpenIddictConstants.ClientTypes.Public, StringComparison.OrdinalIgnoreCase))
            {
                application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken);
                application.Permissions.Add(OpenIddictConstants.Permissions.ResponseTypes.Token);
            }
        }

        if (!buildInGrantTypes.Contains(grantType))
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.GrantType + grantType);
        }
    }

    var buildInScopes = new[] {
        OpenIddictConstants.Permissions.Scopes.Address, OpenIddictConstants.Permissions.Scopes.Email,
        OpenIddictConstants.Permissions.Scopes.Phone, OpenIddictConstants.Permissions.Scopes.Profile,
        OpenIddictConstants.Permissions.Scopes.Roles
    };

    foreach (var scope in scopes)
    {
        if (buildInScopes.Contains(scope))
        {
            application.Permissions.Add(scope);
        }
        else
        {
            application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.Scope + scope);
        }
    }

    if (!redirectUris.IsNullOrEmpty())
    {
        foreach (var redirectUri in redirectUris)
        {
            if (!redirectUri.IsNullOrWhiteSpace())
            {
                if (!Uri.TryCreate(redirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString())
                {
                    throw new BusinessException(L["InvalidRedirectUri", redirectUri]);
                }
                if (application.RedirectUris.All(x => x != uri))
                {
                    application.RedirectUris.Add(uri);
                }
            }
        }
    }

    if (!postLogoutRedirectUris.IsNullOrEmpty())
    {
        foreach (var postLogoutRedirectUri in postLogoutRedirectUris)
        {
            if (!postLogoutRedirectUri.IsNullOrWhiteSpace())
            { 
                if (!Uri.TryCreate(postLogoutRedirectUri, UriKind.Absolute, out var uri) || !uri.IsWellFormedOriginalString())
                {
                    throw new BusinessException(L["InvalidPostLogoutRedirectUri", postLogoutRedirectUri]);
                }

                if (application.PostLogoutRedirectUris.All(x => x != uri))
                {
                    application.PostLogoutRedirectUris.Add(uri);
                }
            }
        }
    }

    if (permissions != null)
    {
        await _permissionDataSeeder.SeedAsync(
            ClientPermissionValueProvider.ProviderName,
            name,
            permissions,
            null
        );
    }

    if (client == null)
    {
        await _applicationManager.CreateAsync(application);
        return;
    }

    if (!HasSameRedirectUris(client, application))
    {
        client.RedirectUris = JsonSerializer.Serialize(application.RedirectUris.Select(q => q.ToString().RemovePostFix("/")));
        client.PostLogoutRedirectUris = JsonSerializer.Serialize(application.PostLogoutRedirectUris.Select(q => q.ToString().RemovePostFix("/")));

        await _applicationManager.UpdateAsync(client.ToModel());
    }

    if (!HasSameScopes(client, application))
    {
        client.Permissions = JsonSerializer.Serialize(application.Permissions.Select(q => q.ToString()));
        await _applicationManager.UpdateAsync(client.ToModel());
    }
}

Hi there, we are trying to update from 9.0.0 to 9.1.0 but we are facing issues.

This is our project configuration:

  • Template: app
  • Created ABP Studio Version: 0.9.23
  • Current ABP Studio Version: 0.9.25
  • Tiered: Yes
  • Multi-Tenancy: Yes
  • UI Framework: blazor-server
  • Theme: leptonx
  • Theme Style: system
  • Run Install Libs: Yes
  • Database Provider: mongodb
  • Run Db Migrator: Yes
  • Mobile Framework: none
  • Public Website: No
  • Include Tests: Yes
  • Kubernetes Configuration: Yes
  • Distributed Event Bus: none
  • Use Local References: No
  • Optional Modules:
    • TextTemplateManagement
    • LanguageManagement
    • AuditLogging
    • OpenIddictAdmin

When we try to update our solution (or projects) to 9.1.0 through ABP Studio or through abp update, the result is that only some projects are updated (to 9.0.4 instead of 9.1.0)... the solution compiles but when we try to start it the authorization web project fails... We have tried with the following commands as well before executing the update:

dotnet nuget locals all --clear
dotnet tool update -g Volo.Abp.Studio.Cli
abp suite remove
abp suite install

Here is the result of the abp update command:

C:\repos\d2u-cx\test>abp update
[09:59:36 INF] You are running the second generation of the ABP CLI. If you're interested in the legacy CLI, see https://abp.io/new-cli
📌 ABP CLI 0.9.25 (Beta)
[09:59:39 INF] Package: "Volo.Abp.AspNetCore-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Autofac-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.PermissionManagement.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AspNetCore.Serilog-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Caching.StackExchangeRedis-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.FeatureManagement.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.DistributedLocking-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.SettingManagement.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Public.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Public.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Public.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Admin.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Identity.Pro.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Public.Web.OpenIddict-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Saas.Host.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Public.Web.Impersonation-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AuditLogging.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Saas.Host.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.OpenIddict.Pro.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.LanguageManagement.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.TextTemplateManagement.Application-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.PermissionManagement.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.FeatureManagement.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.SettingManagement.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Identity.Pro.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Public.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Admin.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Caching.StackExchangeRedis-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Saas.Host.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AuditLogging.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.DistributedLocking-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.OpenIddict.Pro.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.LanguageManagement.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Autofac-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.TextTemplateManagement.Application.Contracts-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Swashbuckle-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AspNetCore.Serilog-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AspNetCore.Mvc.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AspNetCore.Authentication.OpenIdConnect-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Http.Client.Web-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Http.Client.IdentityModel.Web-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Admin.Blazor.Server-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Public.Blazor.Server-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Public.Web.Impersonation-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Identity.Pro.Blazor.Server-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AuditLogging.Blazor.Server-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.OpenIddict.Pro.Blazor.Server-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.LanguageManagement.Blazor.Server-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Saas.Host.Blazor.Server-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.TextTemplateManagement.Blazor.Server-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.SettingManagement.Blazor.Server-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.FeatureManagement.Blazor.Server-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Autofac-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Caching.StackExchangeRedis-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Emailing-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Caching-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.PermissionManagement.Domain.Identity-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.PermissionManagement.Domain.OpenIddict-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.BackgroundJobs.Domain-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AuditLogging.Domain-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.FeatureManagement.Domain-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.SettingManagement.Domain-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.BlobStoring.Database.Domain-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.OpenIddict.Pro.Domain-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Identity.Pro.Domain-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Commercial.SuiteTemplates-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.LanguageManagement.Domain-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Saas.Domain-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.TextTemplateManagement.Domain-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.BackgroundJobs.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AuditLogging.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.FeatureManagement.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.PermissionManagement.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.SettingManagement.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.BlobStoring.Database.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.GlobalFeatures-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.OpenIddict.Pro.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Identity.Pro.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.LanguageManagement.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Saas.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.TextTemplateManagement.Domain.Shared-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.PermissionManagement.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.FeatureManagement.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.SettingManagement.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Identity.Pro.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Admin.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Public.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AuditLogging.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.OpenIddict.Pro.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.LanguageManagement.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Saas.Host.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.TextTemplateManagement.HttpApi-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.PermissionManagement.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.FeatureManagement.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.SettingManagement.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Identity.Pro.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Admin.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Account.Pro.Public.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Saas.Host.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AuditLogging.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.OpenIddict.Pro.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.LanguageManagement.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.TextTemplateManagement.HttpApi.Client-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Autofac-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AspNetCore.Serilog-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Identity.AspNetCore-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Caching.StackExchangeRedis-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.DistributedLocking-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Swashbuckle-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AspNetCore.Authentication.JwtBearer-v9.0.4" is up to date
[09:59:39 INF] Updating package "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX" from v4.0.5 to v4.1.0
[09:59:39 INF] Package: "Volo.Abp.PermissionManagement.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.SettingManagement.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.BackgroundJobs.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.AuditLogging.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.FeatureManagement.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.BlobStoring.Database.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.OpenIddict.Pro.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Identity.Pro.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Saas.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.LanguageManagement.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.TextTemplateManagement.MongoDB-v9.0.4" is up to date
[09:59:39 INF] Package: "Volo.Abp.Autofac-v9.0.4" is up to date
[09:59:39 INF] Updating package "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX" from v4.0.5 to v4.1.0
[09:59:40 INF] Updating package "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme" from v4.0.5 to v4.1.0
[09:59:40 INF] Package: "Volo.Abp.Autofac-v9.0.4" is up to date
[09:59:40 INF] Package: "Volo.Abp.Http.Client.IdentityModel-v9.0.4" is up to date
[09:59:40 INF] Package: "Volo.Abp.Autofac-v9.0.4" is up to date
[09:59:40 INF] Package: "Volo.Abp.TestBase-v9.0.4" is up to date
[09:59:40 INF] Package: "Volo.Abp.Authorization-v9.0.4" is up to date
[09:59:40 INF] Package: "Volo.Abp.BackgroundJobs.Abstractions-v9.0.4" is up to date
[09:59:40 INF] Updating package "Volo.Abp.Studio.Client.AspNetCore" from v0.9.23 to v0.9.25
[09:59:40 INF] Updating package "Volo.Abp.Studio.Client.AspNetCore" from v0.9.23 to v0.9.25
[09:59:40 INF] Updating package "Volo.Abp.Studio.Client.AspNetCore" from v0.9.23 to v0.9.25
[09:59:40 INF] Volo packages are updated in Driven2u.test solution
[09:59:40 INF] Checking installed npm global packages...
[09:59:42 INF] Updated @volo/abp.aspnetcore.mvc.ui.theme.leptonx to ~4.1.0 in \src\Driven2u.Test.AuthServer\package.json.
[09:59:43 INF] Updated @volo/account to ~9.1.0 in \src\Driven2u.Test.AuthServer\package.json.
[09:59:43 INF] Updated @volo/abp.aspnetcore.mvc.ui.theme.leptonx to ~4.1.0 in \src\Driven2u.Test.Blazor\package.json.
[09:59:43 INF] Updated @volo/account to ~9.1.0 in \src\Driven2u.Test.Blazor\package.json.
[09:59:45 INF] Updated @volo/aspnetcore.components.server.leptonxtheme to ~4.1.0 in \src\Driven2u.Test.Blazor\package.json.
[09:59:47 INF] Updated @volo/language-management to ~9.1.0 in \src\Driven2u.Test.Blazor\package.json.
[09:59:47 INF] Running Yarn on C:\repos\d2u-cx\test\src\Driven2u.Test.Blazor\
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning "@volo/abp.aspnetcore.mvc.ui.theme.leptonx > @volo/abp.aspnetcore.mvc.ui.theme.commercial > @abp/aspnetcore.mvc.ui.theme.shared > @abp/bootstrap > bootstrap@5.3.3" has unmet peer dependency "@popperjs/core@^2.11.8".
[4/4] Building fresh packages...
success Saved lockfile.
Done in 19.42s.
[10:00:08 INF] Installing client-side packages...
[10:00:09 INF] Found 1 projects.
[10:00:09 INF] C:\repos\d2u-cx\test\src\Driven2u.Test.Blazor
[10:00:09 INF] Running Yarn on C:\repos\d2u-cx\test\src\Driven2u.Test.Blazor
yarn install v1.22.22
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.09s.
[10:00:11 INF] Running Yarn on C:\repos\d2u-cx\test\src\Driven2u.Test.AuthServer\
yarn install v1.22.22
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning "@volo/abp.aspnetcore.mvc.ui.theme.leptonx > @volo/abp.aspnetcore.mvc.ui.theme.commercial > @abp/aspnetcore.mvc.ui.theme.shared > @abp/bootstrap > bootstrap@5.3.3" has unmet peer dependency "@popperjs/core@^2.11.8".
[4/4] Building fresh packages...
success Saved lockfile.
Done in 1.14s.
[10:00:14 INF] Installing client-side packages...
[10:00:14 INF] Found 1 projects.
[10:00:14 INF] C:\repos\d2u-cx\test\src\Driven2u.Test.AuthServer
[10:00:14 INF] Running Yarn on C:\repos\d2u-cx\test\src\Driven2u.Test.AuthServer
yarn install v1.22.22
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.08s.
[10:00:16 INF] Adjusting import versions...
[10:00:17 INF] Adjusting package versions in abpsln...

Finally, the image below shows that nuget packages manager detects the 9.1.0 packages:

When creating a master - child entities, ABP suite is generating managers (DomainService) for master (AggregateRoot) and child (Entity) entities. This means child entities can be managed directly from child services (application and domain services) without using the master entity, and I think it is not DDD fridendly. My suggestions for ABP Suite is:

  • Do not create the manager (DomainService) for the child entity
  • Create methods for managing child entities within the master managers (DomainService).

In that way the DomainServices for the AggregateRoot entity will take care about its child entities being more DDD friendly. Does it make sense to you?

Hi, I am trying to create a new blazor maui hybrid project with abpstudio v9 and get error at the bundle step. After many hours of digging this is what I concluded, it is an issue with the Volo.Abp.Account.Pro.Public.MauiBlazor package. Please see log from dotnet restore:Unable to find package Volo.Abp.Account.Pro.Public.MauiBlazor. No packages exist with this id in source(s): nuget.abp.io, nuget.org. PackageSourceMapping is enabled, the following source(s) were not considered: C:\Program Files\dotnet\library-packs, Microsoft Visual Studio Offline Packages.

All other abpio packages seem to restore fine. This is preventing me from using the hybrid project type

Using abpstudio 0.9.15, Windows 11

Not sure if anyone else faces this issue?

Hi, I did not get the same problem when I created a Maui Blazor project. Can you send me the configuration of your solution from here? This helps me to understand how you create your project, and help you quickly.

  • Template: app
  • Created ABP Studio Version: 0.9.15
  • Tiered: No
  • Multi-Tenancy: Yes
  • UI Framework: maui-blazor
  • Theme: leptonx
  • Theme Style: system
  • Database Provider: ef
  • Database Management System: sqlserver
  • Separate Tenant Schema: No
  • Mobile Framework: maui
  • Public Website: No
  • Include Tests: Yes

Error when trying to build:

C:\Users\x\source\repos\AbpSolution3\src\AbpSolution3.MauiBlazor\AbpSolution3.MauiBlazor.csproj : error NU1101: Unable to find package Volo.Abp.Account.Pro.Public.MauiBlazor. No packages exist with this id in source(s): nuget.abp.io, nuget.org. PackageSourceMapping is enabled, the following source(s) were not considered: C:\Program Files\dotnet\library-packs, Microsoft Visual Studio Offline Packages.

Can you try dotnet clean & abp clean commands before running the build command?

Hi, I tested with the following configuration in a project created from scratch and I am also having issues:

  • Template: app
  • Created ABP Studio Version: 0.9.17
  • Tiered: No
  • Multi-Tenancy: Yes
  • UI Framework: maui-blazor
  • Theme: leptonx
  • Theme Style: system
  • Database Provider: mongodb
  • Mobile Framework: none
  • Public Website: No
  • Include Tests: Yes
  • Optional Modules:
    • GDPR
    • TextTemplateManagement
    • LanguageManagement
    • AuditLogging
    • OpenIddictAdmin

At first, while ABP Studio was creating the project, I received the error:

ERROR DETAILS: "ABP Bundle failed for the project: C:\repos\driven2u\demo\src

Then I executed: dotnet clean & abp clean and finally dotnet restore command, which raised the error:

ERROR DETAILS: "Dotnet restore failed for the project "Driven2u.Demo". Details: C:\repos\driven2u\demo\src\Driven2u.Demo.MauiBlazor\Driven2u.Demo.MauiBlazor.csproj : error NU1101: Unable to find package Volo.Abp.Account.Pro.Public.MauiBlazor. No packages exist with this id in source(s): nuget.abp.io, nuget.org. PackageSourceMapping is enabled, the following source(s) were not considered: C:\Program Files\dotnet\library-packs, Microsoft Visual Studio Offline Packages. [C:\repos\driven2u\demo\Driven2u.Demo.sln]

17:11:49.690 Information CLI command executed. Command: "abp install-libs" Working directory: "C:\repos\driven2u\demo" CommandResult { ExitCode: 0, IsSuccess: True, StartTime: 12/17/2024 17:11:25 +01:00, ExitTime: 12/17/2024 17:11:49 +01:00, RunTime: 00:00:23.8766083 } 17:11:49.691 Information Completed task execution: "Installing client side libraries" 17:13:03.341 Information CLI command executed. Command: "dotnet run --migrate-database --disable-redis" Working directory: "C:\repos\driven2u\demo\src\Driven2u.Demo.DbMigrator" CommandResult { ExitCode: 0, IsSuccess: True, StartTime: 12/17/2024 17:11:25 +01:00, ExitTime: 12/17/2024 17:13:03 +01:00, RunTime: 00:01:37.5230153 } 17:13:03\.341 Information Completed task execution: "Database synchronization \| Migrating database" 17:13:03.341 Information Starting task execution: "Running bundle command" 17:13:09.758 Information CLI command executed. Command: "dotnet build -v:q /property:WarningLevel=0 /clp:ErrorsOnly /graphBuild" Working directory: "C:\repos\driven2u\demo\src\Driven2u.Demo.MauiBlazor" CommandResult { ExitCode: 1, IsSuccess: False, StartTime: 12/17/2024 17:13:03 +01:00, ExitTime: 12/17/2024 17:13:09 +01:00, RunTime: 00:00:06.4060427 } 17:13:21.259 Information CLI command executed. Command: "abp bundle -f -t maui-blazor" Working directory: "C:\repos\driven2u\demo\src\Driven2u.Demo.MauiBlazor" CommandResult { ExitCode: -1, IsSuccess: False, StartTime: 12/17/2024 17:13:09 +01:00, ExitTime: 12/17/2024 17:13:21 +01:00, RunTime: 00:00:11.4922839 } 17:13:21.261 Information Failed task execution: "Running bundle command" 17:13:21.261 Information ERROR: "An error has occured!" 17:13:21.261 Information ERROR DETAILS: "ABP Bundle failed for the project: C:\repos\driven2u\demo\src" 17:13:21.261 Warning Exception of type 'Volo.Abp.UserFriendlyException' was thrown. 17:13:21.261 Warning Code:AbpStudio:AbpBundleFailed 17:13:21.262 Warning Details: 17:13:21.262 Warning ---------- Exception Data ---------- ProjectName = C:\repos\driven2u\demo\src ErrorOutput = 17:20:10.608 Information Starting task execution: "Cleaning: Driven2u.Demo" 17:20:13.214 Information CLI command executed. Command: "dotnet clean -v:q /clp:ErrorsOnly" Working directory: "C:\repos\driven2u\demo" CommandResult { ExitCode: 0, IsSuccess: True, StartTime: 12/17/2024 17:20:10 +01:00, ExitTime: 12/17/2024 17:20:13 +01:00, RunTime: 00:00:02.5966837 } 17:20:13.215 Information Completed task execution: "Cleaning: Driven2u.Demo" 17:20:16.482 Information Starting task execution: "Cleaning: Driven2u.Demo" 17:20:17.364 Information CLI command executed. Command: "abp clean" Working directory: "C:\repos\driven2u\demo" CommandResult { ExitCode: 0, IsSuccess: True, StartTime: 12/17/2024 17:20:16 +01:00, ExitTime: 12/17/2024 17:20:17 +01:00, RunTime: 00:00:00.8737123 } 17:20:17.365 Information Completed task execution: "Cleaning: Driven2u.Demo" 17:23:41.969 Information Starting task execution: "Restoring: Driven2u.Demo" 17:23:46.577 Information CLI command executed. Command: "dotnet restore -v:q /clp:ErrorsOnly" Working directory: "C:\repos\driven2u\demo" CommandResult { ExitCode: 1, IsSuccess: False, StartTime: 12/17/2024 17:23:41 +01:00, ExitTime: 12/17/2024 17:23:46 +01:00, RunTime: 00:00:04.5981339 } 17:23:46.579 Information Failed task execution: "Restoring: Driven2u.Demo" 17:23:46.579 Information ERROR: "An error has occured!" 17:23:46.579 Information ERROR DETAILS: "Dotnet restore failed for the project "Driven2u.Demo". Details: C:\repos\driven2u\demo\src\Driven2u.Demo.MauiBlazor\Driven2u.Demo.MauiBlazor.csproj : error NU1101: Unable to find package Volo.Abp.Account.Pro.Public.MauiBlazor. No packages exist with this id in source(s): nuget.abp.io, nuget.org. PackageSourceMapping is enabled, the following source(s) were not considered: C:\Program Files\dotnet\library-packs, Microsoft Visual Studio Offline Packages. [C:\repos\driven2u\demo\Driven2u.Demo.sln]" 17:23:46.579 Information Exception of type 'Volo.Abp.Studio.AbpStudioException' was thrown. 17:23:46.579 Information Code:AbpStudio:DotnetRestoreFailed 17:23:46.579 Information Details: 17:23:46.579 Information ---------- Exception Data ---------- ProjectName = Driven2u.Demo Details = C:\repos\driven2u\demo\src\Driven2u.Demo.MauiBlazor\Driven2u.Demo.MauiBlazor.csproj : error NU1101: Unable to find package Volo.Abp.Account.Pro.Public.MauiBlazor. No packages exist with this id in source(s): nuget.abp.io, nuget.org. PackageSourceMapping is enabled, the following source(s) were not considered: C:\Program Files\dotnet\library-packs, Microsoft Visual Studio Offline Packages. [C:\repos\driven2u\demo\Driven2u.Demo.sln]

Hi all! when creating a new solution with the OpenidDict Admin module, the application types are blank The application type in database is null

Is this OK?

This is the solution configuration:

  • Template: app
  • Created ABP Studio Version: 0.9.15
  • Tiered: No
  • Multi-Tenancy: Yes
  • UI Framework: blazor-server
  • Theme: leptonx
  • Theme Style: system
  • Database Provider: ef
  • Database Management System: sqlserver
  • Separate Tenant Schema: Yes
  • Mobile Framework: maui
  • Public Website: Yes
  • Include Tests: Yes
  • Optional Modules:
    • GDPR
    • FileManagement
    • TextTemplateManagement
    • LanguageManagement
    • AuditLogging
    • Chat
    • OpenIddictAdmin

Hi, swagger is not working after creating a new solution:

  • Template: app
  • Created ABP Studio Version: 0.9.15
  • Tiered: No
  • Multi-Tenancy: Yes
  • UI Framework: blazor-server
  • Theme: leptonx
  • Theme Style: system
  • Database Provider: ef
  • Database Management System: sqlserver
  • Separate Tenant Schema: Yes
  • Mobile Framework: maui
  • Public Website: Yes
  • Include Tests: Yes
  • Optional Modules:
    • GDPR
    • FileManagement
    • TextTemplateManagement
    • LanguageManagement
    • AuditLogging
    • Chat
    • OpenIddictAdmin

This is how swagger page looks:

Here are the logs when requesting /swagger (OpenId traces were replaced by "...")

[01:20:44 INF] Request starting HTTP/2 GET https://localhost:44333/swagger - null null
...
[01:20:45 INF] Request finished HTTP/2 GET https://localhost:44333/swagger - 301 0 null 108.0025ms
[01:20:45 INF] Request starting HTTP/2 GET https://localhost:44333/swagger/index.html - null null
...
[01:20:45 INF] Request finished HTTP/2 GET https://localhost:44333/swagger/index.html - 200 null text/html;charset=utf-8 214.7503ms
[01:20:45 INF] Request starting HTTP/2 POST https://localhost:44333/_blazor/disconnect - multipart/form-data; boundary=----WebKitFormBoundary3at1LypLqPakByVU 359
...
[01:20:45 INF] Executed endpoint '/_blazor'
[01:20:45 INF] Request finished HTTP/2 CONNECT https://localhost:44333/_blazor?id=QCRa5yKILdCr56vBPDoCDg - 200 null null 64161.2487ms
[01:20:45 INF] Request starting HTTP/2 GET https://localhost:44333/swagger/swagger-ui.css - null null
[01:20:45 INF] Request starting HTTP/2 GET https://localhost:44333/swagger/index.css - null null
...
[01:20:45 INF] Request starting HTTP/2 GET https://localhost:44333/swagger/ui/abp.js - null null
...
[01:20:45 INF] Sending file. Request path: '/swagger/ui/abp.js'. Physical path: 'N/A'
[01:20:45 INF] Request starting HTTP/2 GET https://localhost:44333/swagger/ui/abp.swagger.js - null null
[01:20:45 INF] Request finished HTTP/2 GET https://localhost:44333/swagger/ui/abp.js - 200 3122 application/javascript 46.9327ms
[01:20:45 INF] Request starting HTTP/2 GET https://localhost:44333/swagger/swagger-ui-standalone-preset.js - null null
[01:20:45 INF] Request starting HTTP/2 GET https://localhost:44333/swagger/swagger-ui-bundle.js - null null
[01:20:45 INF] Request starting HTTP/2 GET https://localhost:44333/swagger/ui/index.js - null null
...
[01:20:45 INF] Request starting HTTP/2 GET https://localhost:44333/_framework/aspnetcore-browser-refresh.js - null null
...
[01:20:45 INF] Sending file. Request path: '/swagger/ui/abp.swagger.js'. Physical path: 'N/A'
[01:20:45 INF] Request finished HTTP/2 GET https://localhost:44333/swagger/ui/abp.swagger.js - 200 4527 application/javascript 45.3559ms
[01:20:45 INF] Request finished HTTP/2 GET https://localhost:44333/_framework/aspnetcore-browser-refresh.js - 200 13797 application/javascript; charset=utf-8 6.0045ms
...
[01:20:46 INF] Request finished HTTP/2 GET https://localhost:44333/swagger/index.css - 200 202 text/css 124.0271ms
[01:20:46 INF] Sending file. Request path: '/swagger-ui.css'. Physical path: 'N/A'
[01:20:46 INF] Request finished HTTP/2 GET https://localhost:44333/swagger/swagger-ui.css - 200 152034 text/css 131.242ms
[01:20:46 INF] Request starting HTTP/2 GET https://localhost:44333/_vs/browserLink - null null
...
[01:20:46 INF] Executing endpoint 'Blazor disconnect'
[01:20:46 INF] Request finished HTTP/2 GET https://localhost:44333/swagger/ui/index.js - 404 0 null 76.8958ms
[01:20:46 INF] Sending file. Request path: '/swagger-ui-standalone-preset.js'. Physical path: 'N/A'
[01:20:46 INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET https://localhost:44333/swagger/ui/index.js, Response status code: 404
[01:20:46 INF] Request finished HTTP/2 GET https://localhost:44333/swagger/swagger-ui-standalone-preset.js - 200 230293 text/javascript 87.6466ms
[01:20:46 INF] Sending file. Request path: '/swagger-ui-bundle.js'. Physical path: 'N/A'
[01:20:46 INF] Request finished HTTP/2 GET https://localhost:44333/_vs/browserLink - 200 null text/javascript; charset=UTF-8 41.654ms
[01:20:46 INF] Request finished HTTP/2 GET https://localhost:44333/swagger/swagger-ui-bundle.js - 200 1452753 text/javascript 156.8066ms
[01:20:46 INF] Executed endpoint '/signalr-hubs/chat'
[01:20:46 INF] Request finished HTTP/1.1 GET https://localhost:44333/signalr-hubs/chat?id=duNpSrdGNMmyW8sYxtZy2w - 101 null null 60315.9313ms
[01:20:46 INF] Executed endpoint '/signalr-hubs/chat'
[01:20:46 INF] Request finished HTTP/1.1 GET https://localhost:44333/signalr-hubs/chat?id=rrbJRIss5Frcj0yBjxawzQ - 101 null null 60365.4161ms
[01:20:46 INF] Executed endpoint 'Blazor disconnect'
[01:20:46 INF] Request finished HTTP/2 POST https://localhost:44333/_blazor/disconnect - 200 0 null 917.267ms
[01:20:46 INF] Request starting HTTP/2 GET https://localhost:44333/swagger/favicon-32x32.png - null null
...
[01:20:46 INF] Sending file. Request path: '/favicon-32x32.png'. Physical path: 'N/A'
[01:20:46 INF] Request finished HTTP/2 GET https://localhost:44333/swagger/favicon-32x32.png - 200 628 image/png 43.1911ms

It seems this is the issue: [01:20:46 INF] Request finished HTTP/2 GET https://localhost:44333/swagger/ui/index.js - 404 0 null 76.8958ms

Not sure if this is the place to report an error with ABP commercial...

I created a solution with ABP Studio and it cannot add the initial database migration.

  • Template: app
  • Created ABP Studio Version: 0.9.13
  • Tiered: Yes
  • Multi-Tenancy: Yes
  • UI Framework: blazor-server
  • Theme: leptonx
  • Theme Style: system
  • Database Provider: ef
  • Database Management System: sqlserver
  • Separate Tenant Schema: Yes
  • Mobile Framework: maui
  • Public Website: Yes
  • Include Tests: Yes
  • Optional Modules:
    • GDPR
    • FileManagement
    • TextTemplateManagement
    • LanguageManagement
    • AuditLogging
    • SaaS
    • Chat
    • OpenIddictAdmin

Errors in ABP Studio:

19:27:54.359 Information Starting task execution: "Database synchronization" 19:27:54.359 Information Starting task execution: "Installing client side libraries" 19:27:54.362 Information Starting task execution: "Generating Signing-Certificate for AuthServer" 19:27:54.362 Information Starting task execution: "Creating TLS Secrets" 19:28:00.166 Information Completed task execution: "Generating Signing-Certificate for AuthServer" 19:28:01.090 Information Completed task execution: "Creating TLS Secrets" 19:28:23.857 Error Build started... Build failed. Use dotnet build to see the errors. 19:28:23.859 Information Failed task execution: "Database synchronization | Creating initial migrations" 19:28:23.859 Information ERROR: "An error has occured!" 19:28:23.859 Information ERROR DETAILS: "Failed to add migration Initial.

This is the error:

'EntityTypeBuilder<Book>' does not contain a definition for 'ConfigureByConvention' and no accessible extension method 'ConfigureByConvention' accepting a first argument of type 'EntityTypeBuilder<Book>' could be found (are you missing a using directive or an assembly reference?)

It was solved by adding the using directive in EntityFrameworkCore\AppDbContextBase.cs class: using Volo.Abp.EntityFrameworkCore.Modeling;

Showing 1 to 10 of 10 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
Do you need assistance from an ABP expert?
Schedule a Meeting
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v9.3.0-preview. Updated on April 16, 2025, 12:13