Solution Configuration
This just started happening, perhaps with my upgrade to Abp Studio Version 1.1.1.
If I create a new Microservice module in our existing solution created with the Micorservice Template, then use Abp Suite to generate the CRUD entities it isn't automatically seeding the permission grants database for the 'admin' role like it has in the past.
It is adding the permission group and permissions though.
Also, in the MVC web UI, the new permission group and permissions aren't showing so they can't be assigned to the manually.
Steps to reproduce:
Add a new Microservice module to an existing Microservice solution. Add a new entity and properties using Abp Suite. Generate the solution updates and migrations. Run the new microservice service on localhost Run a sql query to get the permission group, permissions and permission grants from the Administration database SELECT * FROM [CloverleafCMS__ST_Administration].[dbo].[AbpPermissionGroups] WHERE [DisplayName] LIKE '%TestS%' ORDER BY [Name]
SELECT * FROM [CloverleafCMS__ST_Administration].[dbo].[AbpPermissions] WHERE [Name] LIKE '%Items%' ORDER BY [GroupName], [Name]
SELECT * FROM [CloverleafCMS__ST_Administration].[dbo].[AbpPermissionGrants] -- WHERE [TenantId] IS NOT NULL -- AND [ProviderKey] != 'admin' WHERE [Name] LIKE '%.Items%' ORDER BY [TenantId], [ProviderKey], [Name]
However when I log in as admin in the host tenant the new permission group isn't available for assigning to a role.
I cleared my browser cache and it's still not showing.
Exception message and full stack trace:
4/21/2025 8:31:05 PM [Information] Request starting "HTTP/1.1" "GET" "http"://"localhost:44378""""/api/identity/users""" - null null
4/21/2025 8:31:05 PM [Debug] Get dynamic claims cache for tenant: 6271b9cb-31a4-07e1-e895-3a18325419b0
4/21/2025 8:31:05 PM [Debug] Get dynamic claims cache for user: b7a3c0e6-0b62-1904-314a-3a196bd42430
4/21/2025 8:31:05 PM [Debug] SessionId(4803aa26-2539-4cc7-a833-b5c08567966e) found in cache, Updating hit count(2), last access time(4/21/2025 3:31:05 PM) and IP address(::1).
4/21/2025 8:31:05 PM [Information] Executing endpoint '"Volo.Abp.Identity.IdentityUserController.GetListAsync (Volo.Abp.Identity.Pro.HttpApi)"'
4/21/2025 8:31:05 PM [Information] Route matched with "{area = "identity", controller = "User", action = "GetList"}". Executing controller action with signature "System.Threading.Tasks.Task1[Volo.Abp.Application.Dtos.PagedResultDto1[Volo.Abp.Identity.IdentityUserDto]] GetListAsync(Volo.Abp.Identity.GetIdentityUsersInput)" on controller "Volo.Abp.Identity.IdentityUserController" ("Volo.Abp.Identity.Pro.HttpApi").
4/21/2025 8:31:05 PM [Debug] PermissionStore.GetCacheItemAsync: pn:U,pk:b7a3c0e6-0b62-1904-314a-3a196bd42430,n:AbpIdentity.Users
4/21/2025 8:31:05 PM [Debug] Found in the cache: pn:U,pk:b7a3c0e6-0b62-1904-314a-3a196bd42430,n:AbpIdentity.Users
4/21/2025 8:31:05 PM [Debug] PermissionStore.GetCacheItemAsync: pn:R,pk:identitytest,n:AbpIdentity.Users
4/21/2025 8:31:05 PM [Debug] Found in the cache: pn:R,pk:identitytest,n:AbpIdentity.Users
4/21/2025 8:31:05 PM [Debug] PermissionStore.GetCacheItemAsync: pn:C,pk:CloverleafApi,n:AbpIdentity.Users
4/21/2025 8:31:05 PM [Debug] Found in the cache: pn:C,pk:CloverleafApi,n:AbpIdentity.Users
4/21/2025 8:31:05 PM [Information] Authorization failed. "These requirements were not met:
PermissionRequirement: AbpIdentity.Users"
4/21/2025 8:31:05 PM [Warning] ---------- RemoteServiceErrorInfo ----------
{
"code": "Volo.Authorization:010001",
"message": "Authorization failed! Given policy has not granted.",
"details": null,
"data": null,
"validationErrors": null
}
4/21/2025 8:31:05 PM [Warning] Volo.Abp.Authorization.AbpAuthorizationException: Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
at Microsoft.AspNetCore.Authorization.AbpAuthorizationServiceExtensions.CheckAsync(IAuthorizationService authorizationService, AuthorizationPolicy policy)
at Volo.Abp.Authorization.MethodInvocationAuthorizationService.CheckAsync(MethodInvocationAuthorizationContext context)
at Volo.Abp.Authorization.AuthorizationInterceptor.AuthorizeAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Authorization.AuthorizationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync()
at Volo.Abp.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope)
at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed)
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 lambda_method5120(Closure, Object) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 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)
4/21/2025 8:31:05 PM [Warning] Code:Volo.Authorization:010001
4/21/2025 8:31:05 PM [Information] AuthenticationScheme: "Bearer" was forbidden.
Steps to reproduce the issue:
Create a microservice solution using Abp Studio
Create a user with admin role assigned in SaaS tenant
Get a token for the user in a SaaS tenant This the decoded JwT { "header": { "alg": "RS256", "kid": "", "x5t": "", "typ": "at+jwt" }, "payload": { "iss": "http://localhost:44311/", "aud": [ "AuthServer", "IdentityService", "ServicesService", "SaasService", "AuditLoggingService", "GdprService", "LanguageService" ], "scope": "AdministrationService AuditLoggingService AuthServer ClientService GdprService IdentityService LanguageService SaasService", "jti": "", "sub": "", "preferred_username": "testuser", "email": "", "role": "admin", "tenantid": "6271b9cb-31a4-07e1-e895-3a18325419b0", "given_name": "", "family_name": "", "phone_number_verified": "False", "email_verified": "False", "session_id": "", "unique_name": "", "oi_prst": "", "client_id": "", "oi_tkn_id": "" } }
Use Postman to call any identity service api with the token. For example GET api/idenity/users
Call returns a 403 Forbidden error
Create a user with admin role assigned in host tenant
Get a token for a user in the host
This is the decoded JwT (note: no tenantid) { "header": { "alg": "RS256", "kid": "", "x5t": "", "typ": "at+jwt" }, "payload": { "iss": "http://localhost:44311/", "aud": [ "AuthServer", "IdentityService", "ServicesService", "SaasService", "AuditLoggingService", "GdprService", "LanguageService" ], "scope": "AdministrationService AuditLoggingService AuthServer ClientService GdprService IdentityService LanguageService SaasService", "jti": "", "sub": "", "preferred_username": "testadmin", "email": "", "role": "admin", "given_name": "", "family_name": "", "phone_number_verified": "False", "email_verified": "False", "session_id": "", "unique_name": "", "oi_prst": "", "client_id": "", "oi_tkn_id": "" } }
* Call the same identity api (GET api/idenity/users)
* Response returns the users in the host tenant
Here is the output from the Sql query on the Identity database SELECT * from [CloverleafCMSv2_Administration].[dbo].[AbpPermissionGrants] -- where (tenantId = 'dcb36c08-67ab-fa76-77dd-3a167cb44820' or tenantId = 'a3e9728b-d264-c114-b53c-3a13ab178ad2') where tenantId = '6271b9cb-31a4-07e1-e895-3a18325419b0' -- and ProviderName='R' and ProviderKey = 'admin' and Name like '%users%' order by tenantid, ProviderKey, Name
[ { "Id": "77a456bf-0e82-9808-104a-3a1832542987", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users", "ProviderName": "R", "ProviderKey": "admin" }, { "Id": "0cfb4925-ce70-cabd-fa68-3a1832542989", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users.Create", "ProviderName": "R", "ProviderKey": "admin" }, { "Id": "f35e6343-104d-f03e-9d37-3a183254298d", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users.Delete", "ProviderName": "R", "ProviderKey": "admin" }, { "Id": "fdaf8b58-fcef-6eab-25c5-3a1832542993", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users.Export", "ProviderName": "R", "ProviderKey": "admin" }, { "Id": "e183ace3-8b4c-2cec-3446-3a1832542991", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users.Impersonation", "ProviderName": "R", "ProviderKey": "admin" }, { "Id": "38450b83-4e1e-1772-d0ce-3a1832542992", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users.Import", "ProviderName": "R", "ProviderKey": "admin" }, { "Id": "39fe41c3-daf4-cf05-a2a8-3a183254298f", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users.ManagePermissions", "ProviderName": "R", "ProviderKey": "admin" }, { "Id": "032aaafe-0dce-42c9-4a04-3a183254298a", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users.Update", "ProviderName": "R", "ProviderKey": "admin" }, { "Id": "c1894400-a3b2-826e-0937-3a183254298c", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users.Update.ManageOU", "ProviderName": "R", "ProviderKey": "admin" }, { "Id": "5e5f7716-49ee-a8e9-06eb-3a183254298b", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users.Update.ManageRoles", "ProviderName": "R", "ProviderKey": "admin" }, { "Id": "4fcd8817-8f4f-0d7b-dea3-3a1832542995", "TenantId": "6271b9cb-31a4-07e1-e895-3a18325419b0", "Name": "AbpIdentity.Users.ViewDetails", "ProviderName": "R", "ProviderKey": "admin" } ]
Provide us with the following info:
Template: app-nolayers
Created ABP Studio Version: 0.9.25
Current ABP Studio Version: 0.9.25
Multi-Tenancy: Yes
UI Framework: mvc
Theme: leptonx
Theme Style: system
Run Install Libs: Yes
Database Provider: ef
Database Management System: sqlserver
Create Initial Migration: Yes
Run Db Migrator: Yes
Use Local References: No
Optional Modules:
Exception message and full stack trace:
From Abp Suite Modules tab: Module management is not supported for the current solution's template type
Template: microservice
Created ABP Studio Version: 0.9.23
Current ABP Studio Version: 0.9.24
Multi-Tenancy: Yes
UI Framework: mvc
Theme: leptonx
Theme Style: system
Run Install Libs: Yes
Database Provider: ef
Database Management System: sqlserver
Mobile Framework: none
Public Website: No
Include Tests: Yes
Dynamic Localization: Yes
Kubernetes Configuration: Yes
Grafana Dashboard: Yes
Use Local References: No
Optional Modules:
Steps to reproduce the issue:
Used the upgrade utility within Abp Studio
Also deleted the Abp Studio app and redownloaded from the Abp website and ran the install package.
[17:02:30 INF] Starting CloverleafCMS.ServicesService
[17:02:32 INF] Loaded ABP modules:
[17:02:32 INF] - CloverleafCMS.ServicesService.CloverleafCMSServicesServiceModule
[17:02:32 INF] - Volo.Abp.BlobStoring.Database.EntityFrameworkCore.BlobStoringDatabaseEntityFrameworkCoreModule
[17:02:32 INF] - Volo.Abp.BlobStoring.Database.BlobStoringDatabaseDomainModule
[17:02:32 INF] - Volo.Abp.Domain.AbpDddDomainModule
[17:02:32 INF] - Volo.Abp.Auditing.AbpAuditingModule
[17:02:32 INF] - Volo.Abp.Data.AbpDataModule
[17:02:32 INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule
[17:02:32 INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule
[17:02:32 INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule
[17:02:32 INF] - Volo.Abp.Uow.AbpUnitOfWorkModule
[17:02:32 INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule
[17:02:32 INF] - Volo.Abp.Json.AbpJsonModule
[17:02:32 INF] - Volo.Abp.Json.SystemTextJson.AbpJsonSystemTextJsonModule
[17:02:32 INF] - Volo.Abp.Json.AbpJsonAbstractionsModule
[17:02:32 INF] - Volo.Abp.Timing.AbpTimingModule
[17:02:32 INF] - Volo.Abp.Localization.AbpLocalizationModule
[17:02:32 INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule
[17:02:32 INF] - Volo.Abp.Settings.AbpSettingsModule
[17:02:32 INF] - Volo.Abp.Security.AbpSecurityModule
[17:02:32 INF] - Volo.Abp.Threading.AbpThreadingModule
[17:02:32 INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule
[17:02:32 INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyAbstractionsModule
[17:02:32 INF] - Volo.Abp.Auditing.AbpAuditingContractsModule
[17:02:32 INF] - Volo.Abp.EventBus.AbpEventBusModule
[17:02:32 INF] - Volo.Abp.Guids.AbpGuidsModule
[17:02:32 INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule
[17:02:32 INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule
[17:02:32 INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule
[17:02:32 INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule
[17:02:32 INF] - Volo.Abp.Specifications.AbpSpecificationsModule
[17:02:32 INF] - Volo.Abp.Caching.AbpCachingModule
[17:02:32 INF] - Volo.Abp.Serialization.AbpSerializationModule
[17:02:32 INF] - Volo.Abp.Domain.AbpDddDomainSharedModule
[17:02:32 INF] - Volo.Abp.BlobStoring.AbpBlobStoringModule
[17:02:32 INF] - Volo.Abp.BlobStoring.Database.BlobStoringDatabaseDomainSharedModule
[17:02:32 INF] - Volo.Abp.Validation.AbpValidationModule
[17:02:32 INF] - Volo.Abp.EntityFrameworkCore.AbpEntityFrameworkCoreModule
[17:02:32 INF] - Volo.Abp.SettingManagement.EntityFrameworkCore.AbpSettingManagementEntityFrameworkCoreModule
[17:02:32 INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule
[17:02:32 INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule
[17:02:32 INF] - Volo.Abp.Features.AbpFeaturesModule
[17:02:32 INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule
[17:02:32 INF] - Volo.Abp.LanguageManagement.EntityFrameworkCore.LanguageManagementEntityFrameworkCoreModule
[17:02:32 INF] - Volo.Abp.LanguageManagement.LanguageManagementDomainModule
[17:02:32 INF] - Volo.Abp.LanguageManagement.LanguageManagementDomainSharedModule
[17:02:32 INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule
[17:02:32 INF] - Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementEntityFrameworkCoreModule
[17:02:32 INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule
[17:02:32 INF] - Volo.Abp.Authorization.AbpAuthorizationModule
[17:02:32 INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule
[17:02:32 INF] - Volo.Abp.FeatureManagement.EntityFrameworkCore.AbpFeatureManagementEntityFrameworkCoreModule
[17:02:32 INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule
[17:02:32 INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule
[17:02:32 INF] - Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule
[17:02:32 INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule
[17:02:32 INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule
[17:02:32 INF] - Volo.Saas.EntityFrameworkCore.SaasEntityFrameworkCoreModule
[17:02:32 INF] - Volo.Saas.SaasDomainModule
[17:02:32 INF] - Volo.Saas.SaasDomainSharedModule
[17:02:32 INF] - Volo.Payment.AbpPaymentDomainSharedModule
[17:02:32 INF] - Volo.Abp.EntityFrameworkCore.SqlServer.AbpEntityFrameworkCoreSqlServerModule
[17:02:32 INF] - CloverleafCMS.ServicesService.CloverleafCMSServicesServiceContractsModule
[17:02:32 INF] - Volo.Abp.UI.AbpUiModule
[17:02:32 INF] - Volo.Abp.Commercial.SuiteTemplates.VoloAbpCommercialSuiteTemplatesModule
[17:02:32 INF] - Volo.Abp.Application.AbpDddApplicationContractsModule
[17:02:32 INF] - Volo.Abp.Autofac.AbpAutofacModule
[17:02:32 INF] - Volo.Abp.Castle.AbpCastleCoreModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule
[17:02:32 INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule
[17:02:32 INF] - Volo.Abp.Http.AbpHttpModule
[17:02:32 INF] - Volo.Abp.Http.AbpHttpAbstractionsModule
[17:02:32 INF] - Volo.Abp.Minify.AbpMinifyModule
[17:02:32 INF] - Volo.Abp.AspNetCore.AbpAspNetCoreAbstractionsModule
[17:02:32 INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule
[17:02:32 INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule
[17:02:32 INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule
[17:02:32 INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule
[17:02:32 INF] - Volo.Abp.Application.AbpDddApplicationModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule
[17:02:32 INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule
[17:02:32 INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule
[17:02:32 INF] - Volo.Abp.EventBus.RabbitMq.AbpEventBusRabbitMqModule
[17:02:32 INF] - Volo.Abp.RabbitMQ.AbpRabbitMqModule
[17:02:32 INF] - Volo.Abp.BackgroundJobs.RabbitMQ.AbpBackgroundJobsRabbitMqModule
[17:02:32 INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule
[17:02:32 INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule
[17:02:32 INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingModule
[17:02:32 INF] - Volo.Abp.Studio.Client.AspNetCore.AbpStudioClientAspNetCoreModule
[17:02:32 INF] - Volo.Abp.Studio.AbpStudioClientModule
[17:02:32 INF] - Volo.Abp.Studio.AbpStudioClientContractsModule
[17:02:32 INF] - Volo.Abp.Http.Client.AbpHttpClientModule
[17:02:32 INF] - Volo.Abp.RemoteServices.AbpRemoteServicesModule
[17:02:32 INF] Trying to acquire the distributed lock for database migration: ServicesService.
[17:02:32 INF] Distributed lock is acquired for database migration: ServicesService...
[17:02:33 INF] Seeding data...
[17:02:33 INF] Distributed lock has been released for database migration: ServicesService...
[17:02:34 DBG] Waiting to acquire the distributed lock for saving external localizations...
[17:02:34 INF] Saving external localizations...
[17:02:34 INF] Initialized all ABP modules.
[17:02:35 WRN] Overriding address(es) 'http://localhost:44344'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead.
[17:02:35 INF] Unable to bind to http://localhost:81 on the IPv4 loopback interface: 'Permission denied'.
[17:02:35 INF] Unable to bind to http://localhost:81 on the IPv6 loopback interface: 'Permission denied'.
[17:02:35 ERR] Hosting failed to start
System.IO.IOException: Failed to bind to address http://localhost:81.
---> System.AggregateException: One or more errors occurred. (Permission denied) (Permission denied)
---> System.Net.Sockets.SocketException (13): Permission denied
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint)
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind()
at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_01.<<StartAsync>g__OnBind|0>d.MoveNext() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Core.LocalhostListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken) --- End of inner exception stack trace --- ---> (Inner Exception [#1](https://abp.io/QA/Questions/1)) System.Net.Sockets.SocketException (13): Permission denied at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Bind(EndPoint localEP) at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint) at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind() at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken) at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_01.<
--- End of inner exception stack trace ---
From appsettings.development.json { "App": { "EnablePII": true }, "Kestrel": { "Endpoints": { "Http": { "Url": "http://localhost:5000", "Protocols": "Http1AndHttp2" }, "Https": { "Url": "https://localhost:44344", "Protocols": "Http1AndHttp2" }, "gRPC": { "Url": "http://localhost:81", "Protocols": "Http2" } } }
}
Let me know if you need additional info to help debug this issue.
We created a new Microservice solution using Abp Studio and selected EF Core as the database. So all of the Abp generated microservices (Administration, AuditLogging, Identity, etc.) are using MS Sql databases
Most of our microservices use EF Core but we have a couple that use MongoDB.
I added a new microservice module using Studio and selected MongoDB as the database provider. I then created an entity using Abp Suite and generated all of the code. In the appsettings file the connection strings for the Abp microservices are correctly pointing to the SQL Server databases. I updated the connection string for the new Microservice with the connection string to the MongoDB project.
When I ran the new microservice it correctly created the collections for the new Microservice but it also added collections for the Abp microservices (AbpFeatureGroups, AbpFeatureValues, AbpPermissions, etc) in the mongo database.
Looking at the code I see these in the application module. using Volo.Abp.SettingManagement.MongoDB; using Volo.Abp.PermissionManagement.MongoDB; using Volo.Abp.LanguageManagement.MongoDB; using Volo.Abp.FeatureManagement.MongoDB; using Volo.Abp.AuditLogging.MongoDB; using Volo.Saas.MongoDB; using Volo.Abp.BlobStoring.Database.MongoDB;
I updated the csproj file and the module to use EF Core packages but am getting errors configuring the database for the microservice entity.
I then reviewed the answer to this support question https://abp.io/support/questions/1269/using-MongoDB-in-microservice-service-inside-microservice-solution-which-uses-efcore but it appears written for v8 and it seems there are significant changes to the microservice template in V9.
Is there a document or can you provide detailed steps to update the microservice to use EntityFrameworkCore for the Abp services and MongoDb for our microservice?
Thank you in advance.
I submitted a response the to the community ABP Studio bugs support question but haven't seen a response.
We're using the microservices template and I'm running ABP Studio on a Macbook M1 with Mac OS Sequoia 15.3.1.
When I start the applications/services from Studio and then stop them they don't actually stop. So the next time I try to start them I get the message that the port is already in use. I've tried killing the processes on those ports but I see this message in the logs for a service when I try to restart it. Already closed: The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=320, text='CONNECTION_FORCED - broker forced connection closure with reason 'shutdown'', classId=0, methodId=0
The only work around I've found is to restart my Mac which if I do this multiple times a day it adds up to a lot of wasted time.
[17:25:49 INF] Request starting HTTP/1.1 POST http://authserver.mydomain.dev/Account/Register application/x-www-form-urlencoded 272 [17:25:58 ERR] Padding is invalid and cannot be removed. System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed. at System.Security.Cryptography.SymmetricPadding.GetPaddingLength(ReadOnlySpan1 block, PaddingMode paddingMode, Int32 blockSize)
at System.Security.Cryptography.UniversalCryptoDecryptor.UncheckedTransformFinalBlock(ReadOnlySpan1 inputBuffer, Span1 outputBuffer)
at System.Security.Cryptography.UniversalCryptoDecryptor.UncheckedTransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)
at System.Security.Cryptography.UniversalCryptoTransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)
at System.Security.Cryptography.CryptoStream.ReadAsyncCore(Memory1 buffer, CancellationToken cancellationToken, Boolean useAsync) at System.Security.Cryptography.CryptoStream.Read(Byte[] buffer, Int32 offset, Int32 count) at Volo.Abp.Security.Encryption.StringEncryptionService.Decrypt(String cipherText, String passPhrase, Byte[] salt) at Volo.Abp.Settings.SettingEncryptionService.Decrypt(SettingDefinition settingDefinition, String encryptedValue) [17:25:58 ERR] ---------- RemoteServiceErrorInfo ---------- { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": {}, "validationErrors": null } [17:25:58 ERR] Setting value for 'Abp.Mailing.Smtp.Password' is null or empty! Volo.Abp.AbpException: Setting value for 'Abp.Mailing.Smtp.Password' is null or empty! at Volo.Abp.Emailing.EmailSenderConfiguration.GetNotEmptySettingValueAsync(String name) at Volo.Abp.Emailing.Smtp.SmtpEmailSender.BuildClientAsync() at Volo.Abp.Emailing.Smtp.SmtpEmailSender.SendEmailAsync(MailMessage mail) at Volo.Abp.Emailing.EmailSenderBase.SendAsync(MailMessage mail, Boolean normalize) at Volo.Abp.Emailing.EmailSenderBase.SendAsync(String to, String subject, String body, Boolean isBodyHtml) at Volo.Abp.Account.Emailing.AccountEmailer.SendEmailConfirmationLinkAsync(IdentityUser user, String confirmationToken, String appName, String returnUrl, String returnUrlHash) at Volo.Abp.Account.AccountAppService.SendEmailConfirmationTokenAsync(IdentityUser user, String applicationName, String returnUrl, String returnUrlHash) at Volo.Abp.Account.AccountAppService.RegisterAsync(RegisterDto input) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync()
at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync()
at Volo.Abp.Authorization.AuthorizationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope) at Volo.Abp.Auditing.AuditingInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) 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 Volo.Abp.Account.Public.Web.Pages.Account.RegisterModel.RegisterLocalUserAsync()
at Volo.Abp.Account.Public.Web.Pages.Account.RegisterModel.OnPostAsync()
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.ExecutorFactory.GenericTaskHandlerMethod.Convert[T](Object taskAsObject)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.ExecutorFactory.GenericTaskHandlerMethod.Execute(Object receiver, Object[] arguments)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeHandlerMethodAsync()
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeNextPageFilterAsync()
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Rethrow(PageHandlerExecutedContext context)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeInnerFilterAsync()
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Volo.Abp.AspNetCore.Auditing.AbpAuditingMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
....
[17:26:11 INF] Request finished HTTP/1.1 GET http://authserver.mydomain.dev/Abp/ApplicationLocalizationScript?cultureName=en - - - 200 106364 application/javascript 10787.4888ms`We're using the Microservice template and trying to register a new user with the self registration on the login page. It works fine when running the solution on localhost with the databases on our test server. It throws the above error when registering through the app running on AKS with the same databases on our test server.
We created a new test AKS cluster with Abp version 9.0 and the registration process works. But given our project time line I don't think we can wait until we have all of our microservices upgraded to V9 so ideally we get this fixed in V7.2
Thank you
I've been exploring the ABP Studio Microservice template for Version 9.0 and watched the Youtube video Kubernetes Integrated Microservice Development with ABP Studio. Both the solution template and the video have Sql Server running as an application in Kubernetes.
In our version 7.2 environment we've been using our SQL Servers running on Azure VM's for the micro-service databases.
What's Abp's viewpoint on running in the same Kubernetes cluster as the micro-services, versus running on a VM... for performance, cost and possibly security considerations ? Do you have clients running micro-services with Sql server in Kubernetes?
Thank you.