Activities of "SelcukDuran"

hi

creating new certificate openiddict.pfx solved problem.

its not authserver.pfx in v9.0

thanks

Hi,

im getting this error on published site today. i recreated authserver.pfx but still getting same error. checked for site certificate, is active.

to create authserver.pfx im using;

dotnet dev-certs https -v -ep authserver.pfx -p XXXX
"AuthServer": {
    "Authority": "https://??????",
    "RequireHttpsMetadata": true,
    "CertificatePassPhrase": "XXXX"
  },

what is wrong? couldnt understand the error.

To use key rollover, register both the new certificate and the old one in the credentials collection.
   at OpenIddict.Server.OpenIddictServerConfiguration.PostConfigure(String name, OpenIddictServerOptions options)
   at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()

Hi still getting same errors after redis restart.

> ping
"PONG"

> ping
"PONG"

> ping
"PONG"

> ping
"Could not connect to 127.0.0.1:6379, please check the connection details."

> ping
"Could not connect to 127.0.0.1:6379, please check the connection details."

> ping
"Could not connect to 127.0.0.1:6379, please check the connection details."

> ping
"Could not connect to 127.0.0.1:6379, please check the connection details."

added >>>

PostConfigure<RedisCacheOptions>(options =>
    {
        options.ConfigurationOptions ??= new ConfigurationOptions();
        options.ConfigurationOptions.AbortOnConnectFail = false;
    });

changed >>>

context.Services.AddSingleton<IDistributedLockProvider>(sp =>
        {
            //var connection = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]!);
            var connection = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]!, options => options.AbortOnConnectFail = false);
            return new RedisDistributedSynchronizationProvider(connection.GetDatabase());
        });

Hi,

auth project application.json file

"Redis": {
    "Configuration": "127.0.0.1"
  }

i installed redis insight on windows server machine. wsl linux (ubuntu) is on.

Try Workbench, our advanced CLI. Check out our Quick Guides to learn more about Redis capabilities.

Connecting...

Pinging Redis server on 127.0.0.1:6379
Connected.
Ready to execute commands.


> ping
"PONG"

> ping
"PONG"

> 
-------------------------------------
we wait approximately 10 Seconds 
-------------------------------------
> 

> ping
"Could not connect to 127.0.0.1:6379, please check the connection details."



target framework : .net 8.0 Volo version: 8.2.2 windows server 2022

hello,

i have a problem on deploying application to iis server.

On application publish we had some issues about redis connection. when i look redis its working (checking from console).

when i type from ubuntu console on wsl redis-cli ping PONG i get PONG answer. but application cannot connect to it.

2025-10-24 15:24:55.984 +03:00 [INF] Application is shutting down... 2025-10-24 15:35:38.457 +03:00 [INF] Starting MyBankStore.AuthServer. 2025-10-24 15:35:45.310 +03:00 [FTL] MyBankStore.AuthServer terminated unexpectedly! Volo.Abp.AbpInitializationException: An error occurred during ConfigureServicesAsync phase of the module MyBankStore.MyBankStoreAuthServerModule, MyBankStore.AuthServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. See the inner exception for details. ---> StackExchange.Redis.RedisConnectionException: It was not possible to connect to the redis server(s). Error connecting right now. To allow this multiplexer to continue retrying until it's able to connect, use abortConnect=false in your connection string or AbortOnConnectFail=false; in your code. at StackExchange.Redis.ConnectionMultiplexer.ConnectImpl(ConfigurationOptions configuration, TextWriter log, Nullable1 serverType, EndPointCollection endpoints) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 708 at StackExchange.Redis.ConnectionMultiplexer.Connect(ConfigurationOptions configuration, TextWriter log) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 673 at StackExchange.Redis.ConnectionMultiplexer.Connect(String configuration, TextWriter log) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 651 at MyBankStore.MyBankStoreAuthServerModule.ConfigureServices(ServiceConfigurationContext context) in C:\PROJELER\MyBankStore\src\MyBankStore.AuthServer\MyBankStoreAuthServerModule.cs:line 177 at Volo.Abp.Modularity.AbpModule.ConfigureServicesAsync(ServiceConfigurationContext context) at Volo.Abp.AbpApplicationBase.ConfigureServicesAsync() --- End of inner exception stack trace --- at Volo.Abp.AbpApplicationBase.ConfigureServicesAsync() at Volo.Abp.AbpApplicationFactory.CreateAsync[TStartupModule](IServiceCollection services, Action1 optionsAction) at Microsoft.Extensions.DependencyInjection.ServiceCollectionApplicationExtensions.AddApplicationAsync[TStartupModule](IServiceCollection services, Action1 optionsAction) at Microsoft.Extensions.DependencyInjection.WebApplicationBuilderExtensions.AddApplicationAsync[TStartupModule](WebApplicationBuilder builder, Action1 optionsAction) at MyBankStore.Program.Main(String[] args) in C:\PROJELER\MyBankStore\src\MyBankStore.AuthServer\Program.cs:line 36

thanks..

Problem solved, We have to trust the localhost certificate.

sorry

can login from auth page

@maliming there is no error in log files but im keep getting this error when i trying to open it to the network.. i configured everything with computer name. added a new self signed certificate to computer name. and trusted that certificate..

still getting login error.. what am i doing wrong??

0.6278ms
2023-10-25 17:38:43.010 +03:00 [INF] Request starting HTTP/2 POST https://sd-pc:5002/?handler=Login application/x-www-form-urlencoded 182
2023-10-25 17:38:43.010 +03:00 [INF] Executing endpoint '/Index'
2023-10-25 17:38:43.010 +03:00 [INF] Route matched with {page = "/Index", action = "", controller = "", area = ""}. Executing page /Index
2023-10-25 17:38:43.010 +03:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy
2023-10-25 17:38:43.011 +03:00 [INF] Executing handler method AbpPublishTest.Web.Pages.IndexModel.OnPostLoginAsync - ModelState is "Valid"
2023-10-25 17:38:43.012 +03:00 [INF] AuthenticationScheme: oidc was challenged.
2023-10-25 17:38:43.012 +03:00 [INF] Executed handler method OnPostLoginAsync, returned result .
2023-10-25 17:38:43.012 +03:00 [INF] Executing an implicit handler method - ModelState is "Valid"
2023-10-25 17:38:43.012 +03:00 [INF] Executed an implicit handler method, returned result Microsoft.AspNetCore.Mvc.RazorPages.PageResult.
2023-10-25 17:38:43.015 +03:00 [DBG] Added bundle 'LeptonX.Global' to the page in 0.33 ms.
2023-10-25 17:38:43.015 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.016 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.017 +03:00 [WRN] Could not find the localization resource LeptonX on the remote server!
2023-10-25 17:38:43.019 +03:00 [DBG] Added bundle 'LeptonX.Global' to the page in 1.84 ms.
2023-10-25 17:38:43.020 +03:00 [DBG] Added bundle '0A8933CBA9502D82B30D3F2736E143D4' to the page in 0.13 ms.
2023-10-25 17:38:43.020 +03:00 [INF] Executed page /Index in 9.7361ms
2023-10-25 17:38:43.020 +03:00 [INF] Executed endpoint '/Index'
2023-10-25 17:38:43.021 +03:00 [INF] Request finished HTTP/2 POST https://sd-pc:5002/?handler=Login application/x-www-form-urlencoded 182 - 302 - text/html;+charset=utf-8 10.8125ms

hi,

i started a new tiered project with 0 configuration oracle database and new publish location..

abp and cli version is 7.4

AbpPublishTest my project name.. trying in local iis folder..

is it necessary changing local hostnames for all 3 projects? like https://auth.testproject https://apihost.testproject https://web.testproject

i started it https://localhost/AbpPublishTest/Auth https://localhost/AbpPublishTest/HostApi/swagger/index.html https://localhost/AbpPublishTest/Web/

which one should i use for configs ?

Hi

Could you please create a new package and deploy it to a fresh directory within IIS

what you mean with "create a new package" ? new solution with initial deploy? or my project deploy to a fresh directory? do i need to update db tables (OpenIddictApplications) and appsettings.json ?

these are same but still giving same error

2023-10-17 16:21:20.615 +03:00 [INF] Request starting HTTP/2 GET https://apihost.obinex.com.tr/abp/Swashbuckle/SetCsrfCookie - -
2023-10-17 16:21:20.791 +03:00 [INF] Failed to validate the token.
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidAudienceException: IDX10206: Unable to validate audience. The 'audiences' parameter is empty.
   at Microsoft.IdentityModel.Tokens.Validators.ValidateAudience(IEnumerable`1 audiences, SecurityToken securityToken, TokenValidationParameters validationParameters)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateAudience(IEnumerable`1 audiences, JwtSecurityToken jwtToken, TokenValidationParameters validationParameters)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateTokenPayload(JwtSecurityToken jwtToken, TokenValidationParameters validationParameters)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
2023-10-17 16:21:20.792 +03:00 [INF] Bearer was not authenticated. Failure message: IDX10206: Unable to validate audience. The 'audiences' parameter is empty.
2023-10-17 16:21:20.794 +03:00 [INF] Executing endpoint 'Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle)'
2023-10-17 16:21:20.796 +03:00 [INF] Route matched with {area = "Abp", action = "SetCsrfCookie", controller = "AbpSwashbuckle", page = ""}. Executing controller action with signature Void SetCsrfCookie() on controller Volo.Abp.Swashbuckle.AbpSwashbuckleController (Volo.Abp.Swashbuckle).
2023-10-17 16:21:20.800 +03:00 [INF] Executed action Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle) in 4.5073ms
2023-10-17 16:21:20.800 +03:00 [INF] Executed endpoint 'Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle)'
2023-10-17 16:21:20.814 +03:00 [DBG] Added 0 entity changes to the current audit log
2023-10-17 16:21:20.814 +03:00 [DBG] Added 0 entity changes to the current audit log
2023-10-17 16:21:20.814 +03:00 [INF] Request finished HTTP/2 GET https://apihost.obinex.com.tr/abp/Swashbuckle/SetCsrfCookie - - - 204 - - 199.1664ms
2023-10-17 16:21:20.899 +03:00 [INF] Request starting HTTP/2 GET https://apihost.obinex.com.tr/api/app/direct-pay-iTBusiness-partner-kKTCELLS - -
2023-10-17 16:21:20.900 +03:00 [INF] Failed to validate the token.
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidAudienceException: IDX10206: Unable to validate audience. The 'audiences' parameter is empty.
   at Microsoft.IdentityModel.Tokens.Validators.ValidateAudience(IEnumerable`1 audiences, SecurityToken securityToken, TokenValidationParameters validationParameters)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateAudience(IEnumerable`1 audiences, JwtSecurityToken jwtToken, TokenValidationParameters validationParameters)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateTokenPayload(JwtSecurityToken jwtToken, TokenValidationParameters validationParameters)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
2023-10-17 16:21:20.900 +03:00 [INF] Bearer was not authenticated. Failure message: IDX10206: Unable to validate audience. The 'audiences' parameter is empty.
2023-10-17 16:21:20.901 +03:00 [INF] Executing endpoint 'OBINEX.Controllers.DirectPayITBusinessPartnerKKTCELLS.DirectPayITBusinessPartnerKKTCELLController.GetListAsync (OBINEX.HttpApi)'
2023-10-17 16:21:20.909 +03:00 [INF] Route matched with {area = "app", controller = "DirectPayITBusinessPartnerKKTCELL", action = "GetList", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Volo.Abp.Application.Dtos.PagedResultDto`1[OBINEX.DirectPayITBusinessPartnerKKTCELLS.DirectPayITBusinessPartnerKKTCELLDto]] GetListAsync(OBINEX.DirectPayITBusinessPartnerKKTCELLS.GetDirectPayITBusinessPartnerKKTCELLSInput) on controller OBINEX.Controllers.DirectPayITBusinessPartnerKKTCELLS.DirectPayITBusinessPartnerKKTCELLController (OBINEX.HttpApi).
2023-10-17 16:21:21.118 +03:00 [INF] Authorization failed. These requirements were not met:
PermissionRequirement: OBINEX.DirectPayITBusinessPartnerKKTCELLS
2023-10-17 16:21:21.128 +03:00 [WRN] ---------- RemoteServiceErrorInfo ----------
{
  "code": "Volo.Authorization:010001",
  "message": "Authorization failed! Given policy has not granted.",
  "details": null,
  "data": {},
  "validationErrors": null
}

2023-10-17 16:21:21.128 +03:00 [WRN] Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
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.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
   at Volo.Abp.GlobalFeatures.GlobalFeatureInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 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.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
   at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1.ProceedAsync()
   at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at lambda_method2595(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.&lt;InvokeNextActionFilterAsync&gt;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()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&lt;InvokeNextExceptionFilterAsync&gt;g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
2023-10-17 16:21:21.128 +03:00 [WRN] Code:Volo.Authorization:010001
2023-10-17 16:21:21.135 +03:00 [INF] AuthenticationScheme: Bearer was challenged.
2023-10-17 16:21:21.135 +03:00 [INF] Executed action OBINEX.Controllers.DirectPayITBusinessPartnerKKTCELLS.DirectPayITBusinessPartnerKKTCELLController.GetListAsync (OBINEX.HttpApi) in 226.129ms
2023-10-17 16:21:21.135 +03:00 [INF] Executed endpoint 'OBINEX.Controllers.DirectPayITBusinessPartnerKKTCELLS.DirectPayITBusinessPartnerKKTCELLController.GetListAsync (OBINEX.HttpApi)'
2023-10-17 16:21:21.148 +03:00 [DBG] Added 0 entity changes to the current audit log
2023-10-17 16:21:21.148 +03:00 [DBG] Added 0 entity changes to the current audit log
2023-10-17 16:21:21.149 +03:00 [INF] Request finished HTTP/2 GET https://apihost.obinex.com.tr/api/app/direct-pay-iTBusiness-partner-kKTCELLS - - - 401 - - 250.3002ms
2023-10-17 16:21:27.668 +03:00 [DBG] Executing HealthCheck collector HostedService.
2023-10-17 16:21:27.669 +03:00 [INF] Start processing HTTP request GET http://apihost.obinex.com.tr/health-status
2023-10-17 16:21:27.669 +03:00 [INF] Sending HTTP request GET http://apihost.obinex.com.tr/health-status

Hello selcukdurann@gmail.com,

can you please try to update the given code block in API Host Module.cs file

    private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration) 
    { 
        context.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) 
            .AddJwtBearer(options => 
            { 
                options.Authority = configuration["AuthServer:Authority"]; 
                options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]); 
                options.Audience = "tiered732"; 
                options.BackchannelHttpHandler = GetHandler(); 
            }); 
    } 
    private static HttpClientHandler GetHandler() 
    { 
        var handler = new HttpClientHandler(); 
        handler.ClientCertificateOptions = ClientCertificateOption.Manual; 
        handler.SslProtocols = SslProtocols.Tls12; 
        handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true; 
        return handler; 
    } 

please do let me know if it helps you

Thank you, Anjali

i just copied your code... i see now, audience is different.. ill try it and i will write here result..

Showing 1 to 10 of 31 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.1.0-preview. Updated on October 30, 2025, 06:33