Activities of "scott7106"

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

We upgraded our application from 4.2.1 to 4.3.0. After upgrading, certain administrative functions are no longer available in the client application. I cannot reproduce the problem when creating a new project using 4.3. Which leads me to think there is something incorrect or missing in my upgraded project.

When I look at the grantedPolicies from the /api/abp/application-configuration endpoint, there is a noticable difference between a "new" project created in 4.3 and my upgraded project from 4.2. The following policies exist under policies in both projects and have entries for the admin role in the AbpPermissionGrants table for both projects. However, these permissions do not exist under granted policies in my upgraded project while they are listed under granted policies in my new project.

  "AbpIdentity.OrganizationUnits": true,
  "AbpIdentity.OrganizationUnits.ManageOU": true,
  "AbpIdentity.OrganizationUnits.ManageRoles": true,
  "AbpIdentity.OrganizationUnits.ManageMembers": true,
  "AbpIdentity.ClaimTypes": true,
  "AbpIdentity.ClaimTypes.Create": true,
  "AbpIdentity.ClaimTypes.Update": true,
  "AbpIdentity.ClaimTypes.Delete": true,
  "IdentityServer.IdentityResource": true,
  "IdentityServer.IdentityResource.Update": true,
  "IdentityServer.IdentityResource.Delete": true,
  "IdentityServer.IdentityResource.Create": true,
  "IdentityServer.ApiResource": true,
  "IdentityServer.ApiResource.Update": true,
  "IdentityServer.ApiResource.Delete": true,
  "IdentityServer.ApiResource.Create": true,
  "IdentityServer.Client": true,
  "IdentityServer.Client.Update": true,
  "IdentityServer.Client.Delete": true,
  "IdentityServer.Client.Create": true,
  "IdentityServer.Client.ManagePermissions": true,

These are listed in the AbpPermissionGrants table for the admin role in both projects.

@Alper, I am confirming this resolved the issue for me. Is there any documentation on what the requiresNew parameter is doing?

The issue occurs when trying to create a tenant using Use Shared Database. In this case, I would not expect it to create the tenant connection string record. However, it fails attempting to find the tenant in the TenantStore.

edit: using a new database for the tenant processes successfully and adds the identity information to the new database.

In my use case, we do not use separated databases per tenant. I want to completely disable this function and always use the shared database.

Log Snippet

2021-05-19 12:55:06.128 -04:00 [ERR] Failed executing DbCommand (30,060ms) [Parameters=[@__ef_filter__p_0='?' (DbType = Boolean), @__id_0='?' (DbType = Guid)], CommandType='"Text"', CommandTimeout='30']
...
2021-05-19 12:55:06.147 -04:00 [ERR] An exception occurred while iterating over the results of a query for context type 'Volo.Saas.EntityFrameworkCore.SaasDbContext'.
Microsoft.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
 ---> System.ComponentModel.Win32Exception (258): The wait operation timed out.
   at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__169_0(Task`1 result)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   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.SplitQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(DbContext _, Boolean result, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
ClientConnectionId:d32b8097-20fb-489d-8a01-02a9e35f514a
Error Number:-2,State:0,Class:11
Microsoft.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
 ---> System.ComponentModel.Win32Exception (258): The wait operation timed out.
   at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__169_0(Task`1 result)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   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.SplitQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(DbContext _, Boolean result, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
ClientConnectionId:d32b8097-20fb-489d-8a01-02a9e35f514a
Error Number:-2,State:0,Class:11
2021-05-19 13:04:00.072 -04:00 [ERR] Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
Microsoft.Data.SqlClient.SqlException (0x80131904): Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
 ---> System.ComponentModel.Win32Exception (258): The wait operation timed out.
   at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__169_0(Task`1 result)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   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.SplitQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(DbContext _, Boolean result, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
   at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleOrDefaultAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken)
   at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository`3.FindAsync(TKey id, Boolean includeDetails, CancellationToken cancellationToken)
   at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
   at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Volo.Saas.Tenants.TenantStore.GetCacheItemAsync(Nullable`1 id, String name)
   at Volo.Saas.Tenants.TenantStore.FindAsync(Guid id)
   at OtisEd.Zipline.Data.ZiplineTenantDatabaseMigrationHandler.MigrateAndSeedForTenantAsync(Guid tenantId, String adminEmail, String adminPassword) in C:\AppDev\otised\OtisEd.Zipline\aspnet-core\src\OtisEd.Zipline.Domain\Data\ZiplineTenantDatabaseMigrationHandler.cs:line 92
ClientConnectionId:d32b8097-20fb-489d-8a01-02a9e35f514a
Error Number:-2,State:0,Class:11
Answer

reported by @chris.tune@gmail.com

Create new tenant not creating admin user

  • ABP Framework version: v4.3.0 (Upgraded from 4.2.1)
  • UI type: Angular
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Exception message and stack trace: No error is thrown.
  • Steps to reproduce the issue:
  1. Goto SaaS-->Tenants-->New Tenant
  2. Create a new tenant with the admin user and pass entered.
  3. Save

It looks like the tenant is created but the admin user is not added.
In the database the tenant is added but there is no user.
Potentially a problem in ObjectExtensions or TenantAppService?

Chris

The issue is more pervasive than Chris reported. None of the identity components are created for the new tenant. This includes the admin user, the default admin role and the initial permission grants needed for the new admin role.

Is there a status available for this issue? Will it be addressed in the next patch?

Answer

There is an issue with the current UnitOfWork system of the ABP Framework. Please see https://github.com/abpframework/abp/issues/8740 for the details. As of now, I can confirm the issue in 4.2.2 which is my current version. I have not tested additional versions.

The code for the AppService.UpdateAsync method which gets generated by ABP Suite is problematic. The default for the autoSave parameter is false which may fail silently in certain situations.

Answer

I am encountering an error trying to update a project to the latest release. The error occurs both the CLI and with Suite.

Suite - upgrade all packages

Starting Suite v4.2.0 ... Opening http://localhost:3000 Press Ctrl+C to shut down. [18:05:45 ERR] ---------- RemoteServiceErrorInfo ---------- { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": {}, "validationErrors": null }

[18:05:45 ERR] Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at Volo.Abp.Cli.ProjectModification.VoloNugetPackagesVersionUpdater.GetLatestVersionFromMyGet(String packageId) in D:\github\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\ProjectModification\VoloNugetPackagesVersionUpdater.cs:line 222 at Volo.Abp.Cli.ProjectModification.VoloNugetPackagesVersionUpdater.UpdateSolutionAsync(String solutionPath, Boolean includePreviews, Boolean includeReleaseCandidates, Boolean switchToStable, Boolean checkAll, String version) in D:\github\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\ProjectModification\VoloNugetPackagesVersionUpdater.cs:line 40 at Volo.Abp.Cli.Commands.UpdateCommand.UpdateNugetPackages(CommandLineArgs commandLineArgs, String directory, String version) in D:\github\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\Commands\UpdateCommand.cs:line 70 at Volo.Abp.Cli.Commands.UpdateCommand.ExecuteAsync(CommandLineArgs commandLineArgs) in D:\github\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\Commands\UpdateCommand.cs:line 41 at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Services.SolutionService.UpdatePackagesInSolutionAsync(String solutionPath, Boolean npm, Boolean nuget) at Volo.Abp.Suite.Controllers.AbpSuiteController.UpdatePackagesInSolution(String solutionPath, Boolean npm, Boolean nuget) at lambda_method1659(Closure , Object ) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.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.

CLI - abp update from the aspnet-core directory

[18:02:34 INF] ABP CLI (https://abp.io) [18:02:34 INF] Version 4.2.0 (Stable) [18:02:35 WRN] ABP CLI has a newer stable version 4.2.1, please update to get the latest features and fixes. [18:02:35 WRN] [18:02:35 WRN] Update Command: [18:02:35 WRN] dotnet tool update -g Volo.Abp.Cli [18:02:35 WRN] [18:02:37 ERR] Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at Volo.Abp.Cli.ProjectModification.VoloNugetPackagesVersionUpdater.GetLatestVersionFromMyGet(String packageId) in D:\ci\Jenkins\workspace\abp-framework-release\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\ProjectModification\VoloNugetPackagesVersionUpdater.cs:line 222 at Volo.Abp.Cli.ProjectModification.VoloNugetPackagesVersionUpdater.UpdateSolutionAsync(String solutionPath, Boolean includePreviews, Boolean includeReleaseCandidates, Boolean switchToStable, Boolean checkAll, String version) in D:\ci\Jenkins\workspace\abp-framework-release\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\ProjectModification\VoloNugetPackagesVersionUpdater.cs:line 40 at Volo.Abp.Cli.Commands.UpdateCommand.UpdateNugetPackages(CommandLineArgs commandLineArgs, String directory, String version) in D:\ci\Jenkins\workspace\abp-framework-release\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\Commands\UpdateCommand.cs:line 70 at Volo.Abp.Cli.Commands.UpdateCommand.ExecuteAsync(CommandLineArgs commandLineArgs) in D:\ci\Jenkins\workspace\abp-framework-release\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\Commands\UpdateCommand.cs:line 41 at Volo.Abp.Cli.CliService.RunAsync(String[] args) in D:\ci\Jenkins\workspace\abp-framework-release\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\CliService.cs:line 59

@bunyamin, thank you for the assistance. We were able to deploy our application successfully as a single application in Azure. We may still have issues deploying it behind an SSL terminated load balancer, but that has been deferred to a later date.

Hello @MILLENNIUM, We have not solved the issue with deploying this as a single website with the angular client as a sub folder. We have been successful deploying them as 2 separate web applications.

Here is an exampe of the environment.ts file. This is the local setup, we replace the localhost with a public DNS for our test/production sites.

import { Environment } from '@abp/ng.core';

const baseUrl = 'https://localhost:44316/client';

export const environment = {
  production: false,
  application: {
    baseUrl,
    name: 'Portal',
  },
  oAuthConfig: {
    issuer: 'https://localhost:44316',
    redirectUri: baseUrl,
    clientId: 'Portal_App',
    responseType: 'code',
    scope: 'offline_access openid profile email phone Portal',
  },
  apis: {
    default: {
      url: '',
      rootNamespace: 'OtisEd.Portal',
    },
  },
} as Environment;
Answer

Hi @alper,

After upgrading my CLI and Suite to 4.2 and everything worked correctly. For future reference, does Suite always generate based on the latest stable version regardless of which version I have installed? I do not see an option to tell Suite to use --preview or a specific version.

Answer

I am not sure whether to report this under 4.2 or 4.1. I just generated a new project using Suite. My ABP CLI and Suite are version 4.1.2. After creating a new tiered MVC project, I am getting a bunch of errors about missing Volo.CmsKit.Pro* packages.

Severity Code Description Project File Line Suppression State Error NU1101 Unable to find package Volo.CmsKit.Pro.HttpApi. No packages exist with this id in source(s): ABP Commercial NuGet Source, BlazoriseMyGet, Microsoft Visual Studio Offline Packages, nuget.org, OtisEd NuGet Source IronGlass.HttpApi C:\AppDev\IronGlass\IronGlass\aspnet-core\src\IronGlass.HttpApi\IronGlass.HttpApi.csproj 1

Here is an excerpt from the *.Domain csproj file. <ItemGroup> <PackageReference Include="Volo.Abp.Emailing" Version="4.2.0" /> <PackageReference Include="Volo.Abp.Identity.Domain" Version="4.2.0" /> <PackageReference Include="Volo.Abp.PermissionManagement.Domain.Identity" Version="4.2.0" /> <PackageReference Include="Volo.Abp.IdentityServer.Domain" Version="4.2.0" /> <PackageReference Include="Volo.Abp.PermissionManagement.Domain.IdentityServer" Version="4.2.0" /> <PackageReference Include="Volo.Abp.BackgroundJobs.Domain" Version="4.2.0" /> <PackageReference Include="Volo.Abp.AuditLogging.Domain" Version="4.2.0" /> <PackageReference Include="Volo.Abp.FeatureManagement.Domain" Version="4.2.0" /> <PackageReference Include="Volo.Abp.SettingManagement.Domain" Version="4.2.0" /> <PackageReference Include="Volo.Abp.BlobStoring.Database.Domain" Version="4.2.0" /> <PackageReference Include="Volo.Abp.LanguageManagement.Domain" Version="4.2.0" /> <PackageReference Include="Volo.Abp.LeptonTheme.Management.Domain" Version="4.2.0" /> <PackageReference Include="Volo.Saas.Domain" Version="4.2.0" /> <PackageReference Include="Volo.Abp.TextTemplateManagement.Domain" Version="4.2.0" /> <!-- <TEMPLATE-REMOVE IF-NOT='CMS-KIT'> --> <PackageReference Include="Volo.CmsKit.Pro.Domain" Version="4.2.0" /> <!-- </TEMPLATE-REMOVE> --> </ItemGroup>

Beyond the obvious issues. Why does Sutie v4.1 generate a project with 4.2 references?

Showing 81 to 90 of 116 entries
Made with ❤️ on ABP v9.0.0-preview Updated on September 19, 2024, 10:13