Hi,
In attempting to build you a small test project to replicate our issue, I built a new micro service solution with ABP Studio but elected to use Abp 9.1 (our current solution is 9.0.4).
I tried to replicate the error with the new solution but able to get a token for a tenant user then get users from api/identity/users without error. That tells me that the error was corrected in either 9.1 or in the micro-service templates.
So I tried to upgrade our Abp packages by first upgrading to the latest version of the ABP CLI. Then I tried to use the ABP Studio, then Abp Suite, then using the ABP CLI from a terminal to upgrade our IdentityService. These only updated the application service project file <PackageReference Include="Volo.Abp.Studio.Client.AspNetCore" Version="0.9.23" /> to <PackageReference Include="Volo.Abp.Studio.Client.AspNetCore" Version="0.9.25" />
None of the other packages were updated. I think this must be a bug in the latest version of ABP CLI/ABP Studio.
In the end, I replaced all of the solutions from the Abp micro-service template with the ones generated I created with 9.1.
You should note that the only change we made to any of the Abp template solutions was to the Auth server CloverleafCMSAuthServerModule. We added this to support getting a token for multi-tenancy to our 9.0.4 version, which I also added to the version created with 9.1. private void ConfigureMultiTenancy() { Configure<AbpMultiTenancyOptions>(options => { options.IsEnabled = true; }); }
So, without going through the differences between the latest micro-service templates and the ones we created with ABP Studio back in February, I don't know if you all fixed the issue in the 9.1 packages or the micro-service templates.
I'm not sure what you mean by checking the user claims. In the admin console I went to Claims for the user in the host & the user in the tenant and there were none.
Again, I don't get the authorization error when I get a token for a user in the host tenant and of course it only returns users where TenantId is null.
Here's the host token decoded: { "header": { "alg": "RS256", "kid": "", "x5t": "", "typ": "at+jwt" }, "payload": { "iss": "http://localhost:44311/", "exp": 1745505879, "iat": 1745502279, "aud": [ "AuthServer", "IdentityService", "AdministrationService", "ServicesService", "SaasService", "AuditLoggingService", "GdprService", "LanguageService", "ClientService", "CommunicationsTemplateService", "ClientServicesQuery", "ContactService", "StaffService", "MemberConfigService", "FinancialService", "HousingService", "EngagementLogService", "DocumentService", "NoteService" ], "scope": "roles phone email profile address AdministrationService AuditLoggingService AuthServer ClientService GdprService IdentityService LanguageService SaasService ServicesService CommunicationsTemplateService MemberConfigService ClientServicesQuery FinancialService ContactService StaffService HousingService EngagementLogService DocumentService NoteService", "jti": "c679b9ed-83dd-4f49-867a-4606cd822dd4", "sub": "3503fbd8-b3bb-e0de-d82f-3a18407a620a", "preferred_username": "cpradmin", "email": "", "role": "admin", "given_name": "", "family_name": "", "phone_number_verified": "False", "email_verified": "False", "session_id": "", "unique_name": "cpradmin", "oi_prst": "CloverleafApi", "client_id": "CloverleafApi", "oi_tkn_id": "******" } }
Same error.
Here's the decoded token with the updated scopes
{ "header": { "alg": "RS256", "kid": "******", "x5t": "******", "typ": "at+jwt" }, "payload": { "iss": "http://localhost:44311/", "exp": 1745502008, "iat": 1745498408, "aud": [ "AuthServer", "IdentityService", "AdministrationService", "ServicesService", "SaasService", "AuditLoggingService", "GdprService", "LanguageService", "ClientService", "CommunicationsTemplateService", "ClientServicesQuery", "ContactService", "StaffService", "MemberConfigService", "FinancialService", "HousingService", "EngagementLogService", "DocumentService", "NoteService" ], "scope": "roles phone email profile address AdministrationService AuditLoggingService AuthServer ClientService GdprService IdentityService LanguageService SaasService ServicesService CommunicationsTemplateService MemberConfigService ClientServicesQuery FinancialService ContactService StaffService HousingService EngagementLogService DocumentService NoteService", "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": "CloverleafApi", "client_id": "CloverleafApi", "oi_tkn_id": "******" } }
We developed an API that gets the token from the authserver using Duende.IdentityModel 7.0.0 ` public async Task
var apiEndpoint = _configuration.GetValue<string>("AuthServiceBaseUrl");
var scope = string.Join(" ", scopes);
var discoveryCache = new DiscoveryCache(apiEndpoint);
var disco = await discoveryCache.GetAsync();
if (disco.IsError)
{
Console.WriteLine(disco.Error);
throw new UserFriendlyException($"Error retrieving discovery document: {disco.Error}");
}
var client = new HttpClient();
var passwordTokenRequest = new PasswordTokenRequest
{
Address = disco.TokenEndpoint,
ClientId = clientId,
ClientSecret = clientSecret,
UserName = userName,
Password = password,
Scope = scope
};
if (Tenant != null) passwordTokenRequest.Headers.Add("tenant", Tenant);
var tokenResponse = await client.RequestPasswordTokenAsync(passwordTokenRequest);
TokenResponseDto tokenRequestResponse = new();
if (tokenResponse.IsError)
{
Console.WriteLine("error", tokenResponse);
throw new UserFriendlyException($"Error retrieving token: {tokenResponse.ErrorDescription}");
}
else
{
tokenRequestResponse.AccessToken = tokenResponse.AccessToken;
tokenRequestResponse.RefreshToken = tokenResponse.RefreshToken;
tokenRequestResponse.ExpiresIn = tokenResponse.ExpiresIn;
}
return tokenRequestResponse;
}
`
Here's the curl request to get the token:
`
curl --location 'http://localhost:44326/api/token'
--header 'X-Forwarded-For: 192.0.2.172'
--header 'Content-Type: application/json'
--header 'Cookie: .AspNetCore.Culture=c%3Den%7Cuic%3Den'
--data-raw '{
"tenant": "homefree",
"clientId": "CloverleafApi",
"clientSecret": "Fgf@E98M6XZs3w",
"userName": "testadmin",
"password": "Lucky7E!",
"scopes": ["AdministrationService","AuditLoggingService","AuthServer","ClientService","GdprService","IdentityService", "LanguageService","SaasService","ServicesService", "CommunicationsTemplateService","MemberConfigService","ClientServicesQuery","FinancialService","ContactService","StaffService", "HousingService","EngagementLogService", "DocumentService", "NoteService"]
}'`
Here's the curl request to get the users (the authorization bearer is from the token response:
curl --location 'http://localhost:44326/api/identity/users' \ --header 'Authorization: Bearer **** \ --header 'Cookie: .AspNetCore.Culture=c%3Den%7Cuic%3Den'
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.PagedResultDto
1[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, Func
3 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.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue
1.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, Func
3 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.CastleAsyncAbpInterceptorAdapter
1.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, ValueTask
1 actionResultValueTask)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
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
There was a company Nuget library in the default Nuget.config. I removed it and that fixed it.
Thank you
Just reopened Abp Studio and this it's what is in the log for today
2025-03-12 05:40:01.985 -05:00 [INF] Loaded ABP modules:
2025-03-12 05:40:01.987 -05:00 [INF] - Volo.Abp.Studio.UI.AbpStudioUIHostModule
... Rest of modules
2025-03-12 05:40:01.988 -05:00 [INF] Loaded ABP modules:
2025-03-12 05:40:01.988 -05:00 [INF] - Volo.Abp.Studio.Extensions.StandardTemplates.AbpStudioExtensionsStandardTemplatesCoreModule
2025-03-12 05:40:01.988 -05:00 [INF] - Volo.Abp.Studio.AbpStudioDomainModule
... Rest of modules
2025-03-12 05:40:01.988 -05:00 [INF] Loaded ABP modules:
2025-03-12 05:40:01.988 -05:00 [INF] - Volo.Abp.Studio.Extensions.StandardTemplates.UI.AbpStudioExtensionsStandardTemplatesUIModule
2025-03-12 05:40:01.988 -05:00 [INF] - Volo.Abp.Studio.Extensions.StandardTemplates.AbpStudioExtensionsStandardTemplatesCoreModule
... Rest of modules
2025-03-12 05:40:02.013 -05:00 [INF] Initialized Scheduler Signaller of type: Quartz.Core.SchedulerSignalerImpl
2025-03-12 05:40:02.014 -05:00 [INF] Quartz Scheduler created
2025-03-12 05:40:02.014 -05:00 [INF] JobFactory set to: Quartz.Simpl.MicrosoftDependencyInjectionJobFactory
2025-03-12 05:40:02.022 -05:00 [INF] RAMJobStore initialized.
2025-03-12 05:40:02.022 -05:00 [INF] Quartz Scheduler 3.13.0.0 - '05815d17-416a-45ac-9809-54449954e3ba' with instanceId 'NON_CLUSTERED' initialized
2025-03-12 05:40:02.022 -05:00 [INF] Using thread pool 'Quartz.Simpl.DefaultThreadPool', size: 10
2025-03-12 05:40:02.022 -05:00 [INF] Using job store 'Quartz.Simpl.RAMJobStore', supports persistence: False, clustered: False
2025-03-12 05:40:02.024 -05:00 [INF] Adding 0 jobs, 0 triggers.
2025-03-12 05:40:02.028 -05:00 [INF] Scheduler 05815d17-416a-45ac-9809-54449954e3ba_$_NON_CLUSTERED started.
2025-03-12 05:40:02.254 -05:00 [INF] Starting ABP Studio Backend...
2025-03-12 05:40:02.325 -05:00 [INF] Initialized all ABP modules.
2025-03-12 05:40:02.402 -05:00 [INF] Application started. Press Ctrl+C to shut down.
2025-03-12 05:40:02.402 -05:00 [INF] Hosting environment: Production
2025-03-12 05:40:02.402 -05:00 [INF] Content root path: /
2025-03-12 05:40:05.823 -05:00 [INF] Setting shell environment variables for /bin/zsh
2025-03-12 05:40:06.105 -05:00 [INF] Set shell environment variable: XPC_SERVICE_NAME=application.volo.abp.studio.ui.host.275297326.275297962
2025-03-12 05:40:06.105 -05:00 [INF] Set shell environment variable: USER=rogerhopkins
2025-03-12 05:40:06.105 -05:00 [INF] Set shell environment variable: COMMAND_MODE=unix2003
2025-03-12 05:40:06.106 -05:00 [INF] Set shell environment variable: __CFBundleIdentifier=volo.abp.studio.ui.host
2025-03-12 05:40:06.106 -05:00 [INF] Set shell environment variable: __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0
2025-03-12 05:40:06.106 -05:00 [INF] Set shell environment variable: TMPDIR=/var/folders/cn/j4xfhgq91m3ft78bmt00pg6c0000gn/T/
2025-03-12 05:40:06.106 -05:00 [INF] Set shell environment variable: LOGNAME=rogerhopkins
2025-03-12 05:40:06.106 -05:00 [INF] Original PATH: /opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin/lib/node_modules/@quasar/cli/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/share/dotnet:/Users/rogerhopkins/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/rogerhopkins/.dotnet/tools
2025-03-12 05:40:06.107 -05:00 [INF] Added the following paths: /Users/rogerhopkins/.dotnet, /usr/local/share/dotnet/x64, /Users/rogerhopkins/.abp/studio/cli/old, /opt/homebrew/opt/dotnet@8/bin, /opt/homebrew/opt/dotnet@9/bin, /usr/local/opt/node/bin, /usr/local/Cellar/node, /Users/rogerhopkins/.nvm/versions/node/v18.20.6/bin, /Users/rogerhopkins/.nvm/versions/node/v20.9.0/bin, /opt/homebrew/opt/node/bin, /opt/homebrew/opt/nvm/nvm.sh, /usr/local/opt/nvm/nvm.sh
2025-03-12 05:40:06.108 -05:00 [INF] Set shell environment variable: PATH=/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin/lib/node_modules/@quasar/cli/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/usr/local/share/dotnet:/Users/rogerhopkins/.dotnet/tools:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Users/rogerhopkins/.dotnet/tools:/Users/rogerhopkins/.dotnet:/usr/local/share/dotnet/x64:/Users/rogerhopkins/.abp/studio/cli/old:/opt/homebrew/opt/dotnet@8/bin:/opt/homebrew/opt/dotnet@9/bin:/usr/local/opt/node/bin:/usr/local/Cellar/node:/Users/rogerhopkins/.nvm/versions/node/v18.20.6/bin:/Users/rogerhopkins/.nvm/versions/node/v20.9.0/bin:/opt/homebrew/opt/node/bin:/opt/homebrew/opt/nvm/nvm.sh:/usr/local/opt/nvm/nvm.sh
2025-03-12 05:40:06.108 -05:00 [INF] Set shell environment variable: XPC_FLAGS=0x0
.. Rest of shell environment variables
HOMEBREW_BREW_GIT_REMOTE=/https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
2025-03-12 05:40:06.112 -05:00 [INF] Set .NET environment variable: HOMEBREW_CORE_GIT_REMOTE=/https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
2025-03-12 05:40:07.079 -05:00 [INF] Received HTTP response headers after 759.2526ms - 200
2025-03-12 05:40:07.083 -05:00 [INF] End processing HTTP request after 766.8781ms - 200
2025-03-12 05:40:07.316 -05:00 [INF] Trying to connect to ABP Studio Backend: http://localhost:38271
2025-03-12 05:40:07.965 -05:00 [INF] Start processing HTTP request GET https://abp.io/api/app/post?*
2025-03-12 05:40:07.965 -05:00 [INF] Sending HTTP request GET https://abp.io/api/app/post?*
2025-03-12 05:40:08.144 -05:00 [INF] Received HTTP response headers after 179.338ms - 200
2025-03-12 05:40:08.144 -05:00 [INF] End processing HTTP request after 179.678ms - 200
2025-03-12 05:40:10.088 -05:00 [INF] Starting task execution: Checking license end time
2025-03-12 05:40:10.092 -05:00 [INF] Completed task execution: Checking license end time
2025-03-12 05:40:10.593 -05:00 [INF] Received HTTP response headers after 571.5116ms - 200
2025-03-12 05:40:10.593 -05:00 [INF] End processing HTTP request after 571.7332ms - 200
2025-03-12 05:40:10.601 -05:00 [INF] Starting task execution: Checking pre-requirements
2025-03-12 05:40:12.539 -05:00 [INF] Trying to connect to ABP Studio Backend: http://localhost:38271
2025-03-12 05:40:16.881 -05:00 [INF] CLI command executed. Command: abp cli version
Working directory: /
{"ExitCode":0,"IsSuccess":true,"StartTime":"2025-03-12T05:40:13.6240470-05:00","ExitTime":"2025-03-12T05:40:16.8807040-05:00","RunTime":"00:00:03.2566570","$type":"CommandResult"}
2025-03-12 05:40:26.125 -05:00 [WRN] .NET tool Volo.Abp.Studio.Cli installation failed. Exit code: 1, Output: Unhandled exception: NuGet.Protocol.Core.Types.FatalProtocolException: Unable to load the service index for source https://packagelibrary.dmssolutionsweb.net/nuget.
---> System.Net.Http.HttpRequestException: No route to host (packagelibrary.dmssolutionsweb.net:443)
---> System.Net.Sockets.SocketException (65): No route to host
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|285_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.InjectNewHttp11ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellationAsync(CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage request, Uri authUri, Boolean async, ICredentials credentials, Boolean preAuthenticate, Boolean isProxyAuth, Boolean doRequestAuth, HttpConnectionPool pool, CancellationToken cancellationToken) at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at NuGet.Protocol.ServerWarningLogHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at NuGet.Protocol.HttpSourceAuthenticationHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) at NuGet.Protocol.HttpRetryHandler.<>c__DisplayClass5_1.<<SendAsync>b__0>d.MoveNext() --- End of stack trace from previous location --- at NuGet.Protocol.TimeoutUtility.StartWithTimeout[T](Func
2 getTask, TimeSpan timeout, String timeoutMessage, CancellationToken token)
at NuGet.Protocol.HttpRetryHandler.SendAsync(HttpRetryHandlerRequest request, String source, ILogger log, CancellationToken cancellationToken)
at NuGet.Protocol.HttpSource.GetThrottledResponse(Func1 requestFactory, TimeSpan requestTimeout, TimeSpan downloadTimeout, Int32 maxTries, Boolean isRetry, Boolean isLastAttempt, Guid sessionId, ILogger log, CancellationToken cancellationToken) at NuGet.Protocol.HttpSource.ProcessResponseAsync[T](HttpSourceRequest request, Func
2 processAsync, SourceCacheContext cacheContext, ILogger log, CancellationToken token)
at ODataServiceDocumentUtils.CreateODataServiceDocumentResourceV2(String url, HttpSource client, DateTime utcNow, ILogger log, CancellationToken token)
--- End of inner exception stack trace ---
at ODataServiceDocumentUtils.CreateODataServiceDocumentResourceV2(String url, HttpSource client, DateTime utcNow, ILogger log, CancellationToken token)
at NuGet.Protocol.ODataServiceDocumentResourceV2Provider.TryCreate(SourceRepository source, CancellationToken token)
at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T](CancellationToken token)
at NuGet.Protocol.PackageMetadataResourceV2FeedProvider.TryCreate(SourceRepository source, CancellationToken token)
at NuGet.Protocol.Core.Types.SourceRepository.GetResourceAsync[T](CancellationToken token)
at Microsoft.DotNet.Cli.NuGetPackageDownloader.NuGetPackageDownloader.GetPackageMetadataAsync(PackageSource source, String packageIdentifier, Boolean includePrerelease, Boolean includeUnlisted, CancellationToken cancellationToken)
at Microsoft.DotNet.Cli.NuGetPackageDownloader.NuGetPackageDownloader.GetMatchingVersionInternalAsync(String packageIdentifier, IEnumerable`1 packageSources, VersionRange versionRange, CancellationToken cancellationToken)
at Microsoft.DotNet.Cli.NuGetPackageDownloader.NuGetPackageDownloader.GetBestPackageVersionAsync(PackageId packageId, VersionRange versionRange, PackageSourceLocation packageSourceLocation)
at Microsoft.DotNet.Cli.ToolPackage.ToolPackageDownloader.GetNuGetVersion(PackageLocation packageLocation, PackageId packageId, VerbosityOptions verbosity, VersionRange versionRange, Boolean isGlobalTool)
at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.GetBestMatchNugetVersion(PackageId packageId, VersionRange versionRange, IToolPackageDownloader toolPackageDownloader)
at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.ExecuteInstallCommand(PackageId packageId)
at Microsoft.DotNet.Tools.Tool.Install.ToolInstallGlobalOrToolPathCommand.Execute()
at Microsoft.DotNet.Tools.Tool.Update.ToolUpdateGlobalOrToolPathCommand.Execute()
at System.CommandLine.Invocation.InvocationPipeline.Invoke(ParseResult parseResult)
at System.CommandLine.ParseResult.Invoke()
at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
, StandardOutput:
2025-03-12 05:40:29.128 -05:00 [INF] Completed task execution: Checking pre-requirements
2025-03-12 05:40:29.129 -05:00 [INF] Starting task execution: Loading extensions
2025-03-12 05:40:29.146 -05:00 [INF] Completed task execution: Loading extensions
2025-03-12 05:40:29.146 -05:00 [INF] Starting task execution: Checking for the new version of ABP Studio
2025-03-12 05:40:29.433 -05:00 [INF] [VPK] Checking for updates...
URL: https://abp.io/api/abp-studio/r/download/osx
2025-03-12 05:40:29.450 -05:00 [INF] Downloading release file 'releases.beta.json' from 'https://abp.io/api/abp-studio/r/download/osx/releases.beta.json?arch=arm64&os=osx&rid=osx-arm64'.
2025-03-12 05:40:29.451 -05:00 [INF] [VPK] Creating HttpClient for AbpIoFileDownloader
2025-03-12 05:40:29.452 -05:00 [INF] Start processing HTTP request GET https://abp.io/api/abp-studio/r/download/osx/releases.beta.json?*
2025-03-12 05:40:29.452 -05:00 [INF] Sending HTTP request GET https://abp.io/api/abp-studio/r/download/osx/releases.beta.json?*
2025-03-12 05:40:30.245 -05:00 [INF] Received HTTP response headers after 792.4848ms - 200
2025-03-12 05:40:30.245 -05:00 [INF] End processing HTTP request after 793.0346ms - 200
2025-03-12 05:40:30.253 -05:00 [INF] Found newer remote release available (0.9.24 -> 0.9.25).
2025-03-12 05:40:30.253 -05:00 [INF] There is no local/base package available for this update, so delta updates will be disabled.
2025-03-12 05:40:30.270 -05:00 [INF] Downloading full release (abp-studio-0.9.25-beta-full.nupkg)
2025-03-12 05:40:30.271 -05:00 [INF] Downloading 'abp-studio-0.9.25-beta-full.nupkg' from 'https://abp.io/api/abp-studio/r/download/osx/abp-studio-0.9.25-beta-full.nupkg'.
2025-03-12 05:40:30.271 -05:00 [INF] [VPK] Creating HttpClient for AbpIoFileDownloader
2025-03-12 05:40:30.272 -05:00 [INF] Start processing HTTP request GET https://abp.io/api/abp-studio/r/download/osx/abp-studio-0.9.25-beta-full.nupkg
2025-03-12 05:40:30.272 -05:00 [INF] Sending HTTP request GET https://abp.io/api/abp-studio/r/download/osx/abp-studio-0.9.25-beta-full.nupkg
2025-03-12 05:40:30.274 -05:00 [INF] Completed task execution: Checking for the new version of ABP Studio
2025-03-12 05:40:30.610 -05:00 [INF] Received HTTP response headers after 337.6146ms - 200
2025-03-12 05:40:30.610 -05:00 [INF] End processing HTTP request after 338.1997ms - 200
2025-03-12 05:40:42.687 -05:00 [INF] [VPK] Downloading update: 4
2025-03-12 05:40:46.211 -05:00 [INF] [VPK] Downloading update: 6
2025-03-12 05:40:50.693 -05:00 [INF] [VPK] Downloading update: 10
2025-03-12 05:40:55.735 -05:00 [INF] [VPK] Downloading update: 12
2025-03-12 05:41:04.340 -05:00 [INF] [VPK] Downloading update: 16
2025-03-12 05:41:12.419 -05:00 [INF] [VPK] Downloading update: 18
2025-03-12 05:41:23.033 -05:00 [INF] [VPK] Downloading update: 22
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.
Ok. I updated the module. However it's probably fine to have the AbpDistributedEventBus use MongoDB in the same database.
However I had to add code to configure the SQL dbcontexts
Configure<AbpDbContextOptions>(options => { options.Configure<PermissionManagementDbContext>(dbContextOptions => { dbContextOptions.UseSqlServer(); }); ... remaining Sql db contexts
Here's the revised MemberConfigDbContext
using CloverleafCMS.MemberConfig.Members;
using MongoDB.Driver;
using Volo.Abp.Data;
using Volo.Abp.MongoDB;
using Volo.Abp.MongoDB.DistributedEvents;
namespace CloverleafCMS.MemberConfig.Data;
[ConnectionStringName(DatabaseName)]
public class MemberConfigDbContext :
AbpMongoDbContext,
IHasEventInbox,
IHasEventOutbox
{
public IMongoCollection<Member> Members => Collection<Member>();
public const string DatabaseName = "MemberConfig";
public IMongoCollection<IncomingEventRecord> IncomingEvents => Collection<IncomingEventRecord>();
public IMongoCollection<OutgoingEventRecord> OutgoingEvents => Collection<OutgoingEventRecord>();
protected override void CreateModel(IMongoModelBuilder modelBuilder)
{
base.CreateModel(modelBuilder);
modelBuilder.ConfigureEventInbox();
modelBuilder.ConfigureEventOutbox();
}
}
I was able to build and run the application. However when I execute the post route of the API I get this error: Error] ---------- RemoteServiceErrorInfo ---------- { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": null, "validationErrors": null }
3/5/2025 9:15:38 PM [Error] Autofac.Core.DependencyResolutionException: An exception was thrown while activating Castle.Proxies.MembersAppServiceProxy -> CloverleafCMS.MemberConfig.Members.MongoMemberRepository.
---> Autofac.Core.DependencyResolutionException: None of the constructors found on type 'CloverleafCMS.MemberConfig.Members.MongoMemberRepository' can be invoked with the available services and parameters:
Cannot resolve parameter 'Volo.Abp.MongoDB.IMongoDbContextProvider1[CloverleafCMS.MemberConfig.Data.MemberConfigDbContext] dbContextProvider' of constructor 'Void .ctor(Volo.Abp.MongoDB.IMongoDbContextProvider
1[CloverleafCMS.MemberConfig.Data.MemberConfigDbContext])'.
See https://autofac.rtfd.io/help/no-constructors-bindable for more info.