Activities of "trendline"

  • ABP Framework version: v7.0.2
  • UI type: MVC
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): yes
  • Exception message and stack trace:

deployed to IIS server, when selected a tenant login, the auth server logging below logs:

2023-03-08 12:23:23.963 +08:00 [INF] Request finished HTTP/2 POST https://account2.yxx.top/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%3Fclient\_id%3DSchool\_Web%26redirect\_uri%3Dhttps%253A%252F%252Fschool.yxx.top%252Fsignin-oidc%26response\_type%3Dcode%2520id\_token%26scope%3Dopenid%2520profile%2520roles%2520email%2520phone%2520School%26response\_mode%3Dform\_post%26nonce%3D638138461909738860.MGM4ZDQ3Y2ItZWExYi00OGI4LTkxMjgtODg1MGEzYTNjNmYwOGQxYzZiNjEtYTAxYS00NDFiLTliNDAtMDE4OGQwMzE4NDUz%26state%3DCfDJ8B3bBiDHFkhLrQs4\_gVsubaVXWUDC8HmYXMqpCor7wWSN3Jjp-Ek3A6yFKbchuQwhJXjzi\_lT8R-ZsX6YhqmSWQFlKcfLuW8mSVSmYtpwBffjJo8iO-Abv6tQmZdijuUS4jhKvUmGiieeaCOkYNHE7MCdmx4Dr5\_p0P\_MKt6Ano6XGkKraandkBPY\_xfdR3aSSXMRB8vQsvKSfTyElsi1qsiAYaiDhuNHoeJ8ZpJCWcRazQ5hozb0897wbPVVRZecQS2X8PX9Ca-V76KkV7KFZKjcIRJ2kEm8SVcmHbzTBVL35nGFKGpkQCbShbh7dpn6Q%26x-client-SKU%3DID\_NET6\_0%26x-client-ver%3D6.15.1.0 application/x-www-form-urlencoded 291 - 302 - - 282.5697ms
2023-03-08 12:23:23.971 +08:00 [INF] CAP message 'Volo.Abp.Users.User.Updated' published, internal id '7648707208777474049'
2023-03-08 12:23:24.001 +08:00 [INF] Request starting HTTP/2 GET https://account2.yxx.top/connect/authorize?client\_id=School\_Web&redirect\_uri=https%3A%2F%2Fschool.yxx.top%2Fsignin-oidc&response\_type=code%20id\_token&scope=openid%20profile%20roles%20email%20phone%20School&response\_mode=form\_post&nonce=638138461909738860.MGM4ZDQ3Y2ItZWExYi00OGI4LTkxMjgtODg1MGEzYTNjNmYwOGQxYzZiNjEtYTAxYS00NDFiLTliNDAtMDE4OGQwMzE4NDUz&state=CfDJ8B3bBiDHFkhLrQs4\_gVsubaVXWUDC8HmYXMqpCor7wWSN3Jjp-Ek3A6yFKbchuQwhJXjzi\_lT8R-ZsX6YhqmSWQFlKcfLuW8mSVSmYtpwBffjJo8iO-Abv6tQmZdijuUS4jhKvUmGiieeaCOkYNHE7MCdmx4Dr5\_p0P\_MKt6Ano6XGkKraandkBPY\_xfdR3aSSXMRB8vQsvKSfTyElsi1qsiAYaiDhuNHoeJ8ZpJCWcRazQ5hozb0897wbPVVRZecQS2X8PX9Ca-V76KkV7KFZKjcIRJ2kEm8SVcmHbzTBVL35nGFKGpkQCbShbh7dpn6Q&x-client-SKU=ID\_NET6\_0&x-client-ver=6.15.1.0 - -
2023-03-08 12:23:24.002 +08:00 [INF] The request URI matched a server endpoint: "Authorization".
2023-03-08 12:23:24.002 +08:00 [INF] The authorization request was successfully extracted: {
"client\_id": "School\_Web",
"redirect\_uri": "https://school.yxx.top/signin-oidc",
"response\_type": "code id\_token",
"scope": "openid profile roles email phone School",
"response\_mode": "form\_post",
"nonce": "638138461909738860.MGM4ZDQ3Y2ItZWExYi00OGI4LTkxMjgtODg1MGEzYTNjNmYwOGQxYzZiNjEtYTAxYS00NDFiLTliNDAtMDE4OGQwMzE4NDUz",
"state": "CfDJ8B3bBiDHFkhLrQs4\_gVsubaVXWUDC8HmYXMqpCor7wWSN3Jjp-Ek3A6yFKbchuQwhJXjzi\_lT8R-ZsX6YhqmSWQFlKcfLuW8mSVSmYtpwBffjJo8iO-Abv6tQmZdijuUS4jhKvUmGiieeaCOkYNHE7MCdmx4Dr5\_p0P\_MKt6Ano6XGkKraandkBPY\_xfdR3aSSXMRB8vQsvKSfTyElsi1qsiAYaiDhuNHoeJ8ZpJCWcRazQ5hozb0897wbPVVRZecQS2X8PX9Ca-V76KkV7KFZKjcIRJ2kEm8SVcmHbzTBVL35nGFKGpkQCbShbh7dpn6Q",
"x-client-SKU": "ID\_NET6\_0",
"x-client-ver": "6.15.1.0"
}.
2023-03-08 12:23:24.008 +08:00 [INF] Executing subscriber method 'CmsUserSynchronizer.HandleEventAsync' on group 'cap.queue.viewtance.srp.authserver.0.v1'
2023-03-08 12:23:24.039 +08:00 [INF] The authorization request was successfully validated.
2023-03-08 12:23:24.052 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.AuthorizeController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)'
2023-03-08 12:23:24.053 +08:00 [INF] Route matched with {action = "Handle", controller = "Authorize", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.AuthorizeController (Volo.Abp.OpenIddict.AspNetCore). 2023-03-08 12:23:24.053 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy 2023-03-08 12:23:24.091 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal. 2023-03-08 12:23:24.131 +08:00 [INF] The authorization response was successfully returned to 'https://school.yxx.top/signin-oidc' using the form post response mode: { "code": "[redacted]", "id_token": "[redacted]", "state": "CfDJ8B3bBiDHFkhLrQs4_gVsubaVXWUDC8HmYXMqpCor7wWSN3Jjp-Ek3A6yFKbchuQwhJXjzi_lT8R-ZsX6YhqmSWQFlKcfLuW8mSVSmYtpwBffjJo8iO-Abv6tQmZdijuUS4jhKvUmGiieeaCOkYNHE7MCdmx4Dr5_p0P_MKt6Ano6XGkKraandkBPY_xfdR3aSSXMRB8vQsvKSfTyElsi1qsiAYaiDhuNHoeJ8ZpJCWcRazQ5hozb0897wbPVVRZecQS2X8PX9Ca-V76KkV7KFZKjcIRJ2kEm8SVcmHbzTBVL35nGFKGpkQCbShbh7dpn6Q", "iss": "https://account2.yxx.top/" }. 2023-03-08 12:23:24.132 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.AuthorizeController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 79.1682ms 2023-03-08 12:23:24.132 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.AuthorizeController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' 2023-03-08 12:23:24.134 +08:00 [INF] Request finished HTTP/2 GET https://account2.yxx.top/connect/authorize?client_id=School_Web&redirect_uri=https%3A%2F%2Fschool.yxx.top%2Fsignin-oidc&response_type=code%20id_token&scope=openid%20profile%20roles%20email%20phone%20School&response_mode=form_post&nonce=638138461909738860.MGM4ZDQ3Y2ItZWExYi00OGI4LTkxMjgtODg1MGEzYTNjNmYwOGQxYzZiNjEtYTAxYS00NDFiLTliNDAtMDE4OGQwMzE4NDUz&state=CfDJ8B3bBiDHFkhLrQs4_gVsubaVXWUDC8HmYXMqpCor7wWSN3Jjp-Ek3A6yFKbchuQwhJXjzi_lT8R-ZsX6YhqmSWQFlKcfLuW8mSVSmYtpwBffjJo8iO-Abv6tQmZdijuUS4jhKvUmGiieeaCOkYNHE7MCdmx4Dr5_p0P_MKt6Ano6XGkKraandkBPY_xfdR3aSSXMRB8vQsvKSfTyElsi1qsiAYaiDhuNHoeJ8ZpJCWcRazQ5hozb0897wbPVVRZecQS2X8PX9Ca-V76KkV7KFZKjcIRJ2kEm8SVcmHbzTBVL35nGFKGpkQCbShbh7dpn6Q&x-client-SKU=ID_NET6_0&x-client-ver=6.15.1.0 - - - 200 2118 text/html;charset=UTF-8 132.9270ms 2023-03-08 12:23:24.259 +08:00 [INF] Request starting HTTP/1.1 POST https://account2.yxx.top/connect/token application/x-www-form-urlencoded 183 2023-03-08 12:23:24.260 +08:00 [INF] The request URI matched a server endpoint: "Token". 2023-03-08 12:23:24.270 +08:00 [INF] The token request was successfully extracted: { "client_id": "School_Web", "client_secret": "[redacted]", "code": "[redacted]", "grant_type": "authorization_code", "redirect_uri": "https://school.yxx.top/signin-oidc" }. 2023-03-08 12:23:24.292 +08:00 [INF] Executed subscriber method 'CmsUserSynchronizer.HandleEventAsync' on group 'cap.queue.viewtance.srp.authserver.0.v1' with instance '172_21_0_11' in 278.9283ms 2023-03-08 12:23:24.306 +08:00 [INF] The token request was successfully validated. 2023-03-08 12:23:24.309 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)' 2023-03-08 12:23:24.309 +08:00 [INF] Route matched with {action = "Handle", controller = "Token", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] HandleAsync() on controller Volo.Abp.OpenIddict.Controllers.TokenController (Volo.Abp.OpenIddict.AspNetCore).
2023-03-08 12:23:24.309 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy
2023-03-08 12:23:24.323 +08:00 [INF] Executing SignInResult with authentication scheme (OpenIddict.Server.AspNetCore) and the following principal: System.Security.Claims.ClaimsPrincipal.
2023-03-08 12:23:24.338 +08:00 [INF] The token 'a82fcef4-1f86-77c8-2539-3a09d1a27ebe' was successfully marked as redeemed.
2023-03-08 12:23:24.382 +08:00 [INF] The response was successfully returned as a JSON document: {
"access\_token": "[redacted]",
"token\_type": "Bearer",
"expires\_in": 3600,
"scope": "openid profile roles email phone School",
"id\_token": "[redacted]"
}.
2023-03-08 12:23:24.382 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) in 72.9924ms
2023-03-08 12:23:24.382 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore)'
2023-03-08 12:23:24.389 +08:00 [INF] Request finished HTTP/1.1 POST https://account2.yxx.top/connect/token application/x-www-form-urlencoded 183 - 200 2783 application/json;charset=UTF-8 129.8559ms
2023-03-08 12:23:24.390 +08:00 [INF] Request starting HTTP/1.1 GET https://account2.yxx.top/connect/userinfo - -
2023-03-08 12:23:24.390 +08:00 [INF] The request URI matched a server endpoint: "Userinfo".
2023-03-08 12:23:24.391 +08:00 [INF] The userinfo request was successfully extracted: {
"access\_token": "[redacted]"
}.
2023-03-08 12:23:24.395 +08:00 [INF] The userinfo request was successfully validated.
2023-03-08 12:23:24.398 +08:00 [INF] The authentication demand was rejected because the token had no valid audience.
2023-03-08 12:23:24.399 +08:00 [INF] OpenIddict.Validation.AspNetCore was not authenticated. Failure message: An error occurred while authenticating the current request.
2023-03-08 12:23:24.399 +08:00 [INF] OpenIddict.Validation.AspNetCore was not authenticated. Failure message: An error occurred while authenticating the current request.
2023-03-08 12:23:24.401 +08:00 [INF] Executing endpoint 'Volo.Abp.OpenIddict.Controllers.UserInfoController.Userinfo (Volo.Abp.OpenIddict.AspNetCore)'
2023-03-08 12:23:24.401 +08:00 [INF] Route matched with {action = "Userinfo", controller = "UserInfo", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Userinfo() on controller Volo.Abp.OpenIddict.Controllers.UserInfoController (Volo.Abp.OpenIddict.AspNetCore). 2023-03-08 12:23:24.401 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy 2023-03-08 12:23:24.404 +08:00 [INF] Executing ChallengeResult with authentication schemes (["OpenIddict.Server.AspNetCore"]). 2023-03-08 12:23:24.412 +08:00 [INF] The response was successfully returned as a challenge response: { "error": "invalid_token", "error_description": "The specified access token is bound to an account that no longer exists.", "error_uri": "https://documentation.openiddict.com/errors/ID2025" }. 2023-03-08 12:23:24.412 +08:00 [INF] AuthenticationScheme: OpenIddict.Server.AspNetCore was challenged. 2023-03-08 12:23:24.412 +08:00 [INF] Executed action Volo.Abp.OpenIddict.Controllers.UserInfoController.Userinfo (Volo.Abp.OpenIddict.AspNetCore) in 11.271ms 2023-03-08 12:23:24.412 +08:00 [INF] Executed endpoint 'Volo.Abp.OpenIddict.Controllers.UserInfoController.Userinfo (Volo.Abp.OpenIddict.AspNetCore)' 2023-03-08 12:23:24.413 +08:00 [INF] Request finished HTTP/1.1 GET https://account2.yxx.top/connect/userinfo - - - 302 - - 23.6954ms 2023-03-08 12:23:24.414 +08:00 [INF] Request starting HTTP/1.1 GET https://account2.yxx.top/Error?httpStatusCode=401 - - 2023-03-08 12:23:24.417 +08:00 [INF] Executing endpoint 'Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers.ErrorController.Index (Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared)' 2023-03-08 12:23:24.418 +08:00 [INF] Route matched with {action = "Index", controller = "Error", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] Index(Int32) on controller Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers.ErrorController (Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared).
2023-03-08 12:23:24.424 +08:00 [INF] Executing ViewResult, running view \~/Views/Error/401.cshtml.
2023-03-08 12:23:24.438 +08:00 [INF] Executed ViewResult - view \~/Views/Error/401.cshtml executed in 14.5437ms.
2023-03-08 12:23:24.438 +08:00 [INF] Executed action Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers.ErrorController.Index (Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared) in 20.2675ms
2023-03-08 12:23:24.438 +08:00 [INF] Executed endpoint 'Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Controllers.ErrorController.Index (Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared)'
2023-03-08 12:23:24.439 +08:00 [INF] Request finished HTTP/1.1 GET https://account2.yxx.top/Error?httpStatusCode=401 - - - 401 - text/html;+charset=utf-8 24.7454ms
2023-03-08 12:23:35.459 +08:00 [INF] Request starting HTTP/2 GET https://account2.yxx.top/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%3Fclient\_id%3DSchool\_Web%26redirect\_uri%3Dhttps%253A%252F%252Fschool.yxx.top%252Fsignin-oidc%26response\_type%3Dcode%2520id\_token%26scope%3Dopenid%2520profile%2520roles%2520email%2520phone%2520School%26response\_mode%3Dform\_post%26nonce%3D638138461909738860.MGM4ZDQ3Y2ItZWExYi00OGI4LTkxMjgtODg1MGEzYTNjNmYwOGQxYzZiNjEtYTAxYS00NDFiLTliNDAtMDE4OGQwMzE4NDUz%26state%3DCfDJ8B3bBiDHFkhLrQs4\_gVsubaVXWUDC8HmYXMqpCor7wWSN3Jjp-Ek3A6yFKbchuQwhJXjzi\_lT8R-ZsX6YhqmSWQFlKcfLuW8mSVSmYtpwBffjJo8iO-Abv6tQmZdijuUS4jhKvUmGiieeaCOkYNHE7MCdmx4Dr5\_p0P\_MKt6Ano6XGkKraandkBPY\_xfdR3aSSXMRB8vQsvKSfTyElsi1qsiAYaiDhuNHoeJ8ZpJCWcRazQ5hozb0897wbPVVRZecQS2X8PX9Ca-V76KkV7KFZKjcIRJ2kEm8SVcmHbzTBVL35nGFKGpkQCbShbh7dpn6Q%26x-client-SKU%3DID\_NET6\_0%26x-client-ver%3D6.15.1.0 - -
2023-03-08 12:23:35.466 +08:00 [INF] Executing endpoint '/Account/Login'

<br>
* **Steps to reproduce the issue**:" deployed to IIS server, login with a tenant

In development Environment, the tenant id was taken, all processes working well. with below logs:
2023-03-08 01:04:12.931 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext was successfully processed by OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers+ExtractBasicAuthenticationCredentials\`1[[OpenIddict.Server.OpenIddictServerEvents+ExtractTokenRequestContext, OpenIddict.Server, Version=4.0.0.0, Culture=neutral, PublicKeyToken=35a561290d20de2f]].
2023-03-08 01:04:12.931 +08:00 [INF] The token request was successfully extracted: {
 "client\_id": "School\_Web",
 "client\_secret": "[redacted]",
 "code": "[redacted]",
 "grant\_type": "authorization\_code",
 "redirect\_uri": "https://localhost:44302/signin-oidc",
 "\_\_tenant": "9c328224-e94b-eae6-7586-39fbfa952785"
}.
2023-03-08 01:04:12.931 +08:00 [DBG] The event OpenIddict.Server.OpenIddictServerEvents+ProcessRequestContext was successfully processed by OpenIddict.Server.OpenIddictServerHandlers+Exchange+ExtractTokenRequest.

  • ABP Framework version: v7.1.1
  • UI type: MVC
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): yes
  • Exception message and stack trace: no permission check
  • Steps to reproduce the issue:" Once an user login, even not assign any roles to this user, it also could access all the pages which defined with permission checking.
  • ABP Framework version: v8.1.3
  • UI Type: MVC
  • Database System: EF Core (SQL Server)
  • Steps to reproduce the issue: I used the abp suite tool to generate a brand new MVC microservice solution and changing only the database connection string, and ran the solution through the tye tool with the following issues Please help me! 2024-07-01 16:45:53.932 +08:00 [INF] Now listening on: https://localhost:44321 2024-07-01 16:45:53.932 +08:00 [INF] Application started. Press Ctrl+C to shut down. 2024-07-01 16:45:53.933 +08:00 [INF] Hosting environment: Development 2024-07-01 16:45:53.933 +08:00 [INF] Content root path: D:\PlayPoint\PlayPoint\apps\web\src\PlayPoint.Web 2024-07-01 16:46:37.640 +08:00 [WRN] Could not find IdentityClientConfiguration for AbpMvcClient. Either define a configuration for AbpMvcClient or set a default configuration. 2024-07-01 16:46:37.646 +08:00 [INF] Start processing HTTP request GET https://localhost:44325/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 2024-07-01 16:46:37.654 +08:00 [INF] Sending HTTP request GET https://localhost:44325/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 2024-07-01 16:46:38.453 +08:00 [INF] Received HTTP response headers after 797.5191ms - 200 2024-07-01 16:46:38.456 +08:00 [INF] End processing HTTP request after 812.3524ms - 200 2024-07-01 16:46:38.476 +08:00 [WRN] Could not find IdentityClientConfiguration for AbpMvcClient. Either define a configuration for AbpMvcClient or set a default configuration. 2024-07-01 16:46:38.477 +08:00 [INF] Start processing HTTP request GET https://localhost:44325/api/abp/application-localization?CultureName=zh-Hans&OnlyDynamics=True&api-version=1.0 2024-07-01 16:46:38.477 +08:00 [INF] Sending HTTP request GET https://localhost:44325/api/abp/application-localization?CultureName=zh-Hans&OnlyDynamics=True&api-version=1.0 2024-07-01 16:46:38.568 +08:00 [INF] Received HTTP response headers after 91.1381ms - 200 2024-07-01 16:46:38.568 +08:00 [INF] End processing HTTP request after 91.5797ms - 200 2024-07-01 16:46:40.425 +08:00 [INF] Executing endpoint '/Index' 2024-07-01 16:46:40.437 +08:00 [INF] Route matched with {page = "/Index", action = "", controller = "", area = ""}. Executing page /Index 2024-07-01 16:46:40.439 +08:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy 2024-07-01 16:46:40.456 +08:00 [INF] Executing handler method PlayPoint.Web.Pages.IndexModel.OnGet - ModelState is "Valid" 2024-07-01 16:46:40.456 +08:00 [INF] Executed handler method OnGet, returned result . 2024-07-01 16:46:40.458 +08:00 [INF] Executing an implicit handler method - ModelState is "Valid" 2024-07-01 16:46:40.459 +08:00 [INF] Executed an implicit handler method, returned result Microsoft.AspNetCore.Mvc.RazorPages.PageResult. 2024-07-01 16:46:40.591 +08:00 [WRN] Could not find IdentityClientConfiguration for AbpMvcClient. Either define a configuration for AbpMvcClient or set a default configuration. 2024-07-01 16:46:40.591 +08:00 [INF] Start processing HTTP request GET https://localhost:44325/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 2024-07-01 16:46:40.591 +08:00 [INF] Sending HTTP request GET https://localhost:44325/api/abp/application-configuration?IncludeLocalizationResources=False&api-version=1.0 2024-07-01 16:46:40.651 +08:00 [INF] Received HTTP response headers after 59.742ms - 200 2024-07-01 16:46:40.651 +08:00 [INF] End processing HTTP request after 59.9988ms - 200 2024-07-01 16:46:40.653 +08:00 [WRN] Could not find IdentityClientConfiguration for AbpMvcClient. Either define a configuration for AbpMvcClient or set a default configuration. 2024-07-01 16:46:40.653 +08:00 [INF] Start processing HTTP request GET https://localhost:44325/api/abp/application-localization?CultureName=zh-Hans&OnlyDynamics=True&api-version=1.0 2024-07-01 16:46:40.653 +08:00 [INF] Sending HTTP request GET https://localhost:44325/api/abp/application-localization?CultureName=zh-Hans&OnlyDynamics=True&api-version=1.0 2024-07-01 16:46:40.727 +08:00 [INF] Received HTTP response headers after 73.9091ms - 200 2024-07-01 16:46:40.727 +08:00 [INF] End processing HTTP request after 74.3485ms - 200 2024-07-01 16:46:40.748 +08:00 [WRN] Could not find the localization resource ProductService on the remote server! 2024-07-01 16:46:40.749 +08:00 [WRN] Could not find the localization resource ProductService on the remote server! 2024-07-01 16:46:40.798 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:40.970 +08:00 [WRN] Could not find the localization resource ProductService on the remote server! 2024-07-01 16:46:40.971 +08:00 [WRN] Could not find the localization resource ProductService on the remote server! 2024-07-01 16:46:41.004 +08:00 [WRN] Could not find the localization resource ProductService on the remote server! 2024-07-01 16:46:41.004 +08:00 [WRN] Could not find the localization resource ProductService on the remote server! 2024-07-01 16:46:41.028 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.029 +08:00 [WRN] Could not find the localization resource ProductService on the remote server! 2024-07-01 16:46:41.029 +08:00 [WRN] Could not find the localization resource ProductService on the remote server! 2024-07-01 16:46:41.037 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.038 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.038 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.038 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.038 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.038 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.139 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.488 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.488 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.488 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.488 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.488 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.488 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.488 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.488 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.488 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.488 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.496 +08:00 [WRN] Could not find the localization resource LeptonX on the remote server! 2024-07-01 16:46:41.524 +08:00 [INF] Executed page /Index in 1083.8158ms 2024-07-01 16:46:41.525 +08:00 [INF] Executed endpoint '/Index' 2024-07-01 16:46:41.557 +08:00 [INF] Sending file. Request path: '/Themes/LeptonX/Global/side-menu/css/light.css'. Physical path: 'N/A' 2024-07-01 16:46:41.557 +08:00 [INF] Sending file. Request path: '/libs/abp/core/abp.css'. Physical path: 'D:\PlayPoint\PlayPoint\apps\web\src\PlayPoint.Web\wwwroot\libs\abp\core\abp.css' 2024-07-01 16:46:41.563 +08:00 [INF] Sending file. Request path: '/Themes/LeptonX/Global/side-menu/css/bootstrap-light.css'. Physical path: 'N/A'
  • Exception message and full stack trace: Navigation menu does not appear on specified language setting
  • Steps to reproduce the issue:
    • 1 login with an account, back to the web
    • 2 the navigation menus doesn't appear
    • 3 if access the url directly then it will jump to the account login page let you login again
    • 4 if change the language to another one, the navigation appears, if changed the language back the navigation menu disappeared again
    • 5 if waiting for a moments(about 10 minutes around), the navigation menu may be appears

I have tried restart the application and the server, cleared the redis server cache, it cannot resolve it. I have 3 languages configured, english, zh-hant, zh-hans, the issue occurred on zh-hans.

With Abp 9.2.1, abp suite 9.2.1

  • Exception message and full stack trace: === ENTITY GENERATION STARTED ===
  • SOLUTION: Viewtance.PointLink.AdministrationService
  • ENTITY:{ "Id": "1f31352e-9316-44e6-8d09-b4cd6812deb4", "Name": "TenantDomain", "OriginalName": "TenantDomain", "NamePlural": "TenantDomains", "DatabaseTableName": "TenantDomains", "Namespace": "TenantDomains", "Type": 1, "MasterEntityName": null, "MasterEntity": null, "BaseClass": "FullAuditedEntity", "PageTitle": "TenantDomains", "MenuIcon": "file-alt", "PrimaryKeyType": "Guid", "PreserveCustomCode": true, "IsMultiTenant": true, "CheckConcurrency": true, "BulkDeleteEnabled": true, "ShouldCreateUserInterface": true, "ShouldCreateBackend": true, "ShouldExportExcel": true, "ShouldAddMigration": false, "ShouldUpdateDatabase": false, "CreateTests": true, "Properties": [ { "Id": "8c6af49d-8a07-4d1b-9c7b-c88f7305c670", "Name": "DomainName", "Type": "string", "EnumType": "", "EnumNamespace": "", "EnumAngularImport": "shared/enums", "EnumFilePath": null, "DefaultValue": null, "IsNullable": false, "IsRequired": true, "IsFilterable": true, "AllowEmptyStrings": false, "IsTextArea": false, "MinLength": 1, "MaxLength": 128, "SortOrder": 0, "SortType": 0, "Regex": "", "EmailValidation": false, "ShowOnList": true, "ShowOnCreateModal": true, "ShowOnEditModal": true, "ReadonlyOnEditModal": false, "EnumValues": null, "IsSelected": true, "MaxFileSize": null, "OrdinalIndex": 0 }, { "Id": "66956a19-def1-49f7-9525-6b085f48121f", "Name": "DomainType", "Type": "enum", "EnumType": "DomainType", "EnumNamespace": "Viewtance.PointLink.AdministrationService.Tenants", "EnumAngularImport": "shared/enums/domain-type", "EnumFilePath": "/Viewtance.PointLink.AdministrationService.Contracts/Tenants/DomainType.cs", "DefaultValue": null, "IsNullable": false, "IsRequired": false, "IsFilterable": true, "AllowEmptyStrings": false, "IsTextArea": false, "MinLength": null, "MaxLength": null, "SortOrder": 0, "SortType": 0, "Regex": "", "EmailValidation": false, "ShowOnList": true, "ShowOnCreateModal": true, "ShowOnEditModal": true, "ReadonlyOnEditModal": false, "EnumValues": { "Console": 1, "AuthServer": 2, "Public": 3, "Mobile": 4 }, "IsSelected": true, "MaxFileSize": null, "OrdinalIndex": 0 }, { "Id": "29e4f2bc-97f2-4682-8695-ba1ffbe47316", "Name": "DomainTenantId", "Type": "Guid", "EnumType": "", "EnumNamespace": "", "EnumAngularImport": "shared/enums", "EnumFilePath": null, "DefaultValue": null, "IsNullable": false, "IsRequired": false, "IsFilterable": true, "AllowEmptyStrings": false, "IsTextArea": false, "MinLength": null, "MaxLength": null, "SortOrder": 0, "SortType": 0, "Regex": "", "EmailValidation": false, "ShowOnList": true, "ShowOnCreateModal": true, "ShowOnEditModal": true, "ReadonlyOnEditModal": false, "EnumValues": null, "IsSelected": false, "MaxFileSize": null, "OrdinalIndex": 0 } ], "NavigationProperties": [], "NavigationConnections": [], "ChildEntities": [], "PhysicalFileName": "TenantDomain.json" }

2025-07-13 04:57:07.493 +08:00 [INF] 1/10 - EntityGenerateCommand started... 2025-07-13 04:57:07.948 +08:00 [INF] 1/10 - EntityGenerateCommand completed. | Duration: 454 ms. 2025-07-13 04:57:07.948 +08:00 [INF] 2/10 - RepositoryCommand started... 2025-07-13 04:57:08.740 +08:00 [INF] 2/10 - RepositoryCommand completed. | Duration: 791 ms. 2025-07-13 04:57:08.740 +08:00 [INF] 3/10 - ManagerCommand started... 2025-07-13 04:57:08.988 +08:00 [INF] 3/10 - ManagerCommand completed. | Duration: 247 ms. 2025-07-13 04:57:08.988 +08:00 [INF] 4/10 - AppServiceCommand started... 2025-07-13 04:57:13.792 +08:00 [INF] 4/10 - AppServiceCommand completed. | Duration: 4804 ms. 2025-07-13 04:57:13.792 +08:00 [INF] 5/10 - PermissionCommand started... 2025-07-13 04:57:13.849 +08:00 [INF] 5/10 - PermissionCommand completed. | Duration: 56 ms. 2025-07-13 04:57:13.849 +08:00 [INF] 6/10 - ApplicationObjectMappingCommand started... 2025-07-13 04:57:13.878 +08:00 [ERR] ---------- RemoteServiceErrorInfo ---------- { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": null, "validationErrors": null }

2025-07-13 04:57:13.879 +08:00 [ERR] Value cannot be null. (Parameter 'path') System.ArgumentNullException: Value cannot be null. (Parameter 'path') at System.ArgumentNullException.Throw(String paramName) at System.ArgumentNullException.ThrowIfNull(Object argument, String paramName) at System.ArgumentException.ThrowNullOrEmptyException(String argument, String paramName) at System.IO.File.ReadAllTextAsync(String path, CancellationToken cancellationToken) at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Commands.ApplicationObjectMappingCommand.IJBgcTmZJf() at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Commands.ApplicationObjectMappingCommand.ExecuteAsync(CrudPageCommandOptions options) at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.CommandManager.ExecuteAllAsync(CrudPageCommandOptions options) at Volo.Abp.Suite.Areas.AbpSuite.CrudPageGenerator.Commands.CrudPageGenerator.GenerateAsync(EntityModel entity, Solution solution, EntityModel masterEntity, List1 navigationConnections) at Volo.Abp.Suite.Controllers.CrudPageGeneratorController.SaveAndGenerateEntityAsync(Guid solutionId, EntityModel entity) at lambda_method2003(Closure, Object) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.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) 2025-07-13 04:57:13.884 +08:00 [INF] Executing ObjectResult, writing value of type 'Volo.Abp.Http.RemoteServiceErrorResponse'. 2025-07-13 04:57:13.885 +08:00 [INF] Executed action Volo.Abp.Suite.Controllers.CrudPageGeneratorController.SaveAndGenerateEntityAsync (Volo.Abp.Suite) in 62760.4142ms 2025-07-13 04:57:13.885 +08:00 [INF] Executed endpoint 'Volo.Abp.Suite.Controllers.CrudPageGeneratorController.SaveAndGenerateEntityAsync (Volo.Abp.Suite)' 2025-07-13 04:57:13.885 +08:00 [INF] Request finished HTTP/1.1 POST http://localhost:3000/api/abpSuite/crudPageGenerator/6f93a03f-284a-4842-ae53-00aec0831ca6/save-and-generate-entity - 500 null application/json; charset=utf-8 62761.8723ms

  • Steps to reproduce the issue: Configured a Entity as below logs described, generate the CRUD page

Microsoft.AspNetCore.Authentication.AuthenticationFailureException: An error was encountered while handling the remote login. ---> Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectProtocolException: Message contains error: 'invalid_grant', error_description: 'The specified token is invalid.', error_uri: 'https://documentation.openiddict.com/errors/ID2004'. at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.RedeemAuthorizationCodeAsync(OpenIdConnectMessage tokenEndpointRequest) at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleRemoteAuthenticateAsync() --- End of inner exception stack trace --- at Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.HandleRequestAsync() at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) at Prometheus.HttpMetrics.HttpRequestDurationMiddleware.Invoke(HttpContext context) at Prometheus.HttpMetrics.HttpRequestCountMiddleware.Invoke(HttpContext context) at Prometheus.HttpMetrics.HttpInProgressMiddleware.Invoke(HttpContext context) at Volo.Abp.AspNetCore.Security.AbpSecurityHeadersMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.InterfaceMiddlewareBinder.<>c__DisplayClass2_0.<

  • Steps to reproduce the issue: A micro service architecture solution, from a web or a public web redirect to a separated OpenIddict AuthServer, after the authority, redirected to the original the url, occurred this error

Exception message and full stack trace: Navigation menu does not appear on specified language setting

Steps to reproduce the issue:

1 login with an account, back to the web

2 the navigation menus doesn't appear

3 if access the url directly then it will jump to the account login page let you login again

4 if change the language to another one, the navigation appears, if changed the language back the navigation menu disappeared again

5 if waiting for a moments(about 10 minutes around), the navigation menu may be appears

I have tried restart the application and the server, cleared the redis server cache, it cannot resolve it. I have 3 languages configured, english, zh-hant, zh-hans, the issue occurred on zh-hans.

I want to implement some actions (such as given award points to a user daily if the user sign in every day), I need to add an event to OpenIddict server event that it could fire an event handler to implement the logistics, I have followed the article add the event handler and registered in AuthServer project (a micro-services architecture solution), but the event handler not fired and no logs logged, is there any suggestions to debug, or I am using an incorrect way to configure the event handler?

  • Exception message and full stack trace: No
  • Steps to reproduce the issue: Create an OpenIddictServerEvents.ProcessSignInContext event handler and registered, some code as below:
public class DailyPointsHandler : IOpenIddictServerHandler<OpenIddictServerEvents.ProcessSignInContext>//, ITransientDependency
{
    public static OpenIddictServerHandlerDescriptor Descriptor { get; }
= OpenIddictServerHandlerDescriptor.CreateBuilder<OpenIddictServerEvents.ProcessSignInContext>()
    .UseScopedHandler<DailyPointsHandler>()
    .SetOrder(100_000)
    .SetType(OpenIddictServerHandlerType.Custom)
    .Build();

    private readonly IdentityUserManager _userManager;
    private readonly IClock _clock;
    private readonly ILogger<DailyPointsHandler> _logger;
    private readonly IRewardPointsHistoriesAppService _rewardPointsHistoriesAppService;
    private readonly IUnitOfWorkManager _unitOfWorkManager;

    public DailyPointsHandler(
        IdentityUserManager userManager,
        IClock clock,
        ILogger<DailyPointsHandler> logger,
        IRewardPointsHistoriesAppService rewardPointsHistoriesAppService,
        IUnitOfWorkManager unitOfWorkManager)
    {
        _userManager = userManager;
        _clock = clock;
        _logger = logger;
        _rewardPointsHistoriesAppService = rewardPointsHistoriesAppService;
        _unitOfWorkManager = unitOfWorkManager;

        _logger.LogInformation("DailyPointsHandler constructor initialized");
    }

    public async ValueTask HandleAsync(OpenIddictServerEvents.ProcessSignInContext context)
    {
        _logger.LogInformation("进入每日积分处理器");

        if (context is null) throw new ArgumentNullException(nameof(context));

        // 跳过客户端凭证流程和刷新令牌流程
        if (context.Request.IsClientCredentialsGrantType() ||
            context.Request.IsRefreshTokenGrantType())
        {
            _logger.LogInformation("跳过非用户登录流程");
            return;
        }

        // 获取用户ID
        var userId = context.Principal?.FindFirst(OpenIddictConstants.Claims.Subject)?.Value;
        if (string.IsNullOrEmpty(userId))
        {
            _logger.LogWarning("无法从声明中获取用户ID");
            return;
        }

        try
        {
            using var uow = _unitOfWorkManager.Begin(requiresNew: true);

            var user = await _userManager.FindByIdAsync(userId);
            if (user == null)
            {
                _logger.LogWarning("用户未找到: {UserId}", userId);
                return;
            }

            if (user != null)
            {
                var rewardPointsHistoryCreate = new RewardPointsHistoryCreateDto();
                rewardPointsHistoryCreate.UserId = user.Id;
                rewardPointsHistoryCreate.RewardPointType = RewardPointType.DailySignIn;
                await _rewardPointsHistoriesAppService.CreateAsync(rewardPointsHistoryCreate);
                await uow.CompleteAsync();
                _logger.LogInformation("用户 {UserName} 获得每日登录奖励", user.UserName);
            }

        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "每日积分赠送处理失败");
            // 失败时继续登录流程,不影响认证
        }

    }

}

registered it at:

  private void PreConfigureOpenIddict(IConfiguration configuration, IWebHostEnvironment hostingEnvironment)
    {
        PreConfigure<OpenIddictBuilder>(builder =>
        {
            builder.AddValidation(options =>
            {
                options.AddAudiences("AuthServer");
                options.UseLocalServer();
                options.UseAspNetCore();
            });
            builder.AddServer(options =>
            {
                options.AddEventHandler<ProcessSignInContext>(builder =>
                    builder.UseInlineHandler(context =>
                    {
                        // Attach custom metadata to the configuration document.
                        //context.Metadata["custom_metadata"] = 42;
                        context.Logger.LogInformation("Processing sign-in event in inline handler for user {userId}.", context.Principal?.FindFirst(OpenIddictConstants.Claims.Subject)?.Value);

                        return default;
                    }));
            });
        });

        PreConfigure<OpenIddictServerBuilder>(serverBuilder =>
        {
            serverBuilder.AddEventHandler(DailyPointsHandler.Descriptor);
            serverBuilder.AddEventHandler(SignOutEventHandler.Descriptor);
            serverBuilder.AddEventHandler<ProcessSignInContext>(builder =>
                builder.UseInlineHandler(context =>
                {
                    // Attach custom metadata to the configuration document.
                    //context.Metadata["custom_metadata"] = 42;
                    context.Logger.LogInformation("Processing sign-in event in inline handler for user {userId}.", context.Principal?.FindFirst(OpenIddictConstants.Claims.Subject)?.Value);

                    return default;
                }));
        });
        }
  • Exception message and full stack trace: cannot generate the proxies for new added integration services in a microservice project
  • Steps to reproduce the issue: follow the guides Integration Services add interface and implementation for the new integration service, when using abp studio or cli generate the proxy, not proxies generated, the integration service provider microservice is a project template service IdentityService

any miss configuration for integration service, or the generate proxy action is wrong?

  • Exception message and full stack trace:2025-09-28 05:01:50.206 +08:00 [FTL] Host terminated unexpectedly! Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module Volo.Abp.AuditLogging.AbpAuditLoggingApplicationModule, Volo.Abp.AuditLogging.Application, Version=9.3.4.0, Culture=neutral, PublicKeyToken=null: Unexpected end of expression.. See the inner exception for details. ---> System.FormatException: Unexpected end of expression. at Quartz.CronExpression.BuildExpression(String expression) at Quartz.CronExpression..ctor(String cronExpression) at Quartz.CronExpression.ValidateExpression(String cronExpression) at Quartz.CronScheduleBuilder.CronSchedule(String cronExpression) at Quartz.CronScheduleTriggerBuilderExtensions.WithCronSchedule(TriggerBuilder triggerBuilder, String cronExpression) at Volo.Abp.BackgroundWorkers.Quartz.QuartzPeriodicBackgroundWorkerAdapter1.BuildWorker(IBackgroundWorker worker) at Volo.Abp.BackgroundWorkers.Quartz.QuartzBackgroundWorkerManager.ReScheduleJobAsync(IBackgroundWorker worker, CancellationToken cancellationToken) at Volo.Abp.BackgroundWorkers.Quartz.QuartzBackgroundWorkerManager.AddAsync(IBackgroundWorker worker, CancellationToken cancellationToken) at Volo.Abp.AuditLogging.AbpAuditLoggingApplicationModule.OnApplicationInitializationAsync(ApplicationInitializationContext context) at Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor.InitializeAsync(ApplicationInitializationContext context, IAbpModule module) at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) --- End of inner exception stack trace --- at Volo.Abp.Modularity.ModuleManager.InitializeModulesAsync(ApplicationInitializationContext context) at Volo.Abp.AbpApplicationBase.InitializeModulesAsync() at Volo.Abp.AbpApplicationWithExternalServiceProvider.InitializeAsync(IServiceProvider serviceProvider) at Microsoft.AspNetCore.Builder.AbpApplicationBuilderExtensions.InitializeApplicationAsync(IApplicationBuilder app) at Viewtance.FM.Program.Main(String[] args) in D:\Source\Repos\apps\Viewtance.FM\src\Viewtance.FM.HttpApi.Host\Program.cs:line 58 `
  • Steps to reproduce the issue: Debug Host project in a tired solution, host project failed to start.
Showing 11 to 20 of 21 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.2.0-preview. Updated on January 22, 2026, 11:30
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.