-
ABP Framework version: v5.1.4
-
UI type: Angular
-
DB provider: EF Core
-
Tiered (MVC) or Identity Server Separated (Angular): yes
-
Exception message and stack trace:
-
Steps to reproduce the issue:"
We have some issues with Redis timeouts.
During our investigation we found that this is something related to the LanguageManagement module and a DynamicLocalizationResourceContributor.
If we use our api method that returns PagedResultDto<T> multiple calls to Redis are executed (approximately 120 calls per our one api call!):
[16:07:33 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpExceptionHandling_pl-PL
[16:07:33 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpExceptionHandling_pl
[16:07:33 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpExceptionHandling_en
[16:07:33 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:OrderManagementSystem_pl-PL
[16:07:34 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:OrderManagementSystem_pl
[16:07:34 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:OrderManagementSystem_pl-PL
[16:07:34 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpValidation_pl-PL
[16:07:34 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpValidation_pl
[16:07:34 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpValidation_en
[16:07:34 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpUi_pl-PL
[16:07:34 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpUi_pl
[16:07:34 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpUi_en
....
Removing DynamicLocalizationResourceContributor helped. We found this tip in other topic in abp support forum (https://support.abp.io/QA/Questions/2625/Help-needed-what%27s-LanguageManagement-doing-here). But there is also a warning that LanguageManagement won't work anymore.
Configure<AbpLocalizationOptions>(options =>
{
options.GlobalContributors.Remove<DynamicLocalizationResourceContributor>();
});
What is DynamicLocalizationResourceContributor responsible for?
Can we simply remove this? I didn't notice any problems in application after remove this contributor.
Why LanguageManagement make so many call to redis for endpoints with PagedResultDto<T> return type?
9 Answer(s)
-
0
hi
I will check this again.
-
0
Hey,
Any news on this issue? -
0
hi
I am still working on it. I will leave a message if I'm done. -
0
Still working on it.
-
0
Current statue:
Double the query if the localized text does not exist in
pl-PL
.See
[16:07:33 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpExceptionHandling_pl-PL [16:07:33 WRN] Redis get c:Volo.Abp.LanguageManagement.Texts,k:AbpExceptionHandling_pl
I suggest adding the corresponding translated text via
LanguageManagement
.We will add an option to disable this behavior in 5.3. https://github.com/abpframework/abp/issues/12361
-
0
If we use our api method that returns PagedResultDto<T> multiple calls to Redis are executed (approximately 120 calls per our one api call!):
Can you share your API method code and full logs?
-
0
Sample stacktrace (1 redis call)
TracedRedisCache.Get()at C:\dev\Neuca\src\aspnet-core\src\Neuca.OrderManagementSystem.HttpApi.Host\OmsExtensions\TracedRedisCache.cs:line 27
DistributedCache<LanguageTextCacheItem, string>.Get()
DistributedCache<LanguageTextCacheItem, string>.GetOrAdd()
DynamicResourceLocalizer.GetCacheItem()
DynamicResourceLocalizer.GetOrNull()
DynamicLocalizationResourceContributor.GetOrNull()
LocalizationResourceContributorList.GetOrNull()
AbpDictionaryBasedStringLocalizer.GetLocalizedStringOrNull()
AbpDictionaryBasedStringLocalizer.GetLocalizedString() [2]
AbpDictionaryBasedStringLocalizer.GetLocalizedString() [2]
AbpDictionaryBasedStringLocalizer.get_Item() [2]
AbpDictionaryBasedStringLocalizer.GetLocalizedString() [1]
AbpDictionaryBasedStringLocalizer.GetLocalizedString() [1]
AbpDictionaryBasedStringLocalizer.get_Item() [1]
AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.<>c__DisplayClass4_0.<CreateDisplayMetadata>b__0()
DefaultModelMetadata.get_DisplayName()
ModelMetadata.GetDisplayName()
DataAnnotationsModelValidator.Validate()
ValidationVisitor.ValidateNode()
ValidationVisitor.VisitSimpleType()
ValidationVisitor.VisitImplementation() [2]
ValidationVisitor.Visit() [2]
ValidationVisitor.VisitChildren()
ValidationVisitor.VisitComplexType()
ValidationVisitor.VisitImplementation() [1]
ValidationVisitor.Visit() [1]
ValidationVisitor.Validate()
ObjectModelValidator.Validate()
ParameterBinder.EnforceBindRequiredAndValidate()
ParameterBinder.<BindModelAsync>d__8.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder.<BindModelAsync>d__8>()
AsyncValueTaskMethodBuilder<ModelBindingResult>.Start<Microsoft.AspNetCore.Mvc.ModelBinding.ParameterBinder.<BindModelAsync>d__8>()
ParameterBinder.BindModelAsync()
ControllerBinderDelegateProvider.<>c__DisplayClass0_0.<<CreateBinderDelegate>g__Bind|0>d.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Mvc.Controllers.ControllerBinderDelegateProvider.<>c__DisplayClass0_0.<<CreateBinderDelegate>g__Bind|0>d>()
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Mvc.Controllers.ControllerBinderDelegateProvider.<>c__DisplayClass0_0.<<CreateBinderDelegate>g__Bind|0>d>()
ControllerBinderDelegateProvider.<>c__DisplayClass0_0.<CreateBinderDelegate>g__Bind|0()
ControllerActionInvoker.BindArgumentsAsync()
ControllerActionInvoker.Next()
ControllerActionInvoker.InvokeInnerFilterAsync()
ResourceInvoker.Next() [3]
ResourceInvoker.InvokeNextExceptionFilterAsync()
ResourceInvoker.Next() [2]
ResourceInvoker.InvokeNextResourceFilter()
ResourceInvoker.Next() [1]
ResourceInvoker.InvokeFilterPipelineAsync()
ResourceInvoker.<<InvokeAsync>g__Logged|17_1>d.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<<InvokeAsync>g__Logged|17_1>d>()
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<<InvokeAsync>g__Logged|17_1>d>()
ResourceInvoker.<InvokeAsync>g__Logged|17_1()
ResourceInvoker.InvokeAsync()
ControllerRequestDelegateFactory.<>c__DisplayClass10_0.<CreateRequestDelegate>b__0()
EndpointMiddleware.Invoke()
AbpUnitOfWorkMiddleware.<InvokeAsync>d__3.MoveNext()
AsyncMethodBuilderCore.Start<Volo.Abp.AspNetCore.Uow.AbpUnitOfWorkMiddleware.<InvokeAsync>d__3>()
AsyncTaskMethodBuilder.Start<Volo.Abp.AspNetCore.Uow.AbpUnitOfWorkMiddleware.<InvokeAsync>d__3>()
AbpUnitOfWorkMiddleware.InvokeAsync()
UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() [5]
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d>() [5]
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d>() [5]
UseMiddlewareExtensions.<>c__DisplayClass6_1.<UseMiddlewareInterface>b__1() [5]
AbpExceptionHandlingMiddleware.<InvokeAsync>d__3.MoveNext()
AsyncMethodBuilderCore.Start<Volo.Abp.AspNetCore.ExceptionHandling.AbpExceptionHandlingMiddleware.<InvokeAsync>d__3>()
AsyncTaskMethodBuilder.Start<Volo.Abp.AspNetCore.ExceptionHandling.AbpExceptionHandlingMiddleware.<InvokeAsync>d__3>()
AbpExceptionHandlingMiddleware.InvokeAsync()
UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() [4]
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d>() [4]
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d>() [4]
UseMiddlewareExtensions.<>c__DisplayClass6_1.<UseMiddlewareInterface>b__1() [4]
AbpAuditingMiddleware.<InvokeAsync>d__14.MoveNext()
AsyncMethodBuilderCore.Start<Volo.Abp.AspNetCore.Auditing.AbpAuditingMiddleware.<InvokeAsync>d__14>()
AsyncTaskMethodBuilder.Start<Volo.Abp.AspNetCore.Auditing.AbpAuditingMiddleware.<InvokeAsync>d__14>()
AbpAuditingMiddleware.InvokeAsync()
UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() [3]
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d>() [3]
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d>() [3]
UseMiddlewareExtensions.<>c__DisplayClass6_1.<UseMiddlewareInterface>b__1() [3]
StaticFileMiddleware.Invoke() [2]
SwaggerUIMiddleware.<Invoke>d__5.MoveNext()
AsyncMethodBuilderCore.Start<Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.<Invoke>d__5>()
AsyncTaskMethodBuilder.Start<Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.<Invoke>d__5>()
SwaggerUIMiddleware.Invoke()
SwaggerMiddleware.<Invoke>d__4.MoveNext()
AsyncMethodBuilderCore.Start<Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.<Invoke>d__4>()
AsyncTaskMethodBuilder.Start<Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.<Invoke>d__4>()
SwaggerMiddleware.Invoke()
[Lightweight Method Call]
UseMiddlewareExtensions.<>c__DisplayClass5_1.<UseMiddleware>b__2() [5]
AuthorizationMiddleware.<Invoke>d__6.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.<Invoke>d__6>()
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.<Invoke>d__6>()
AuthorizationMiddleware.Invoke()
IdentityServerMiddleware.<Invoke>d__3.MoveNext()
AsyncMethodBuilderCore.Start<IdentityServer4.Hosting.IdentityServerMiddleware.<Invoke>d__3>()
AsyncTaskMethodBuilder.Start<IdentityServer4.Hosting.IdentityServerMiddleware.<Invoke>d__3>()
IdentityServerMiddleware.Invoke()
[Lightweight Method Call]
UseMiddlewareExtensions.<>c__DisplayClass5_1.<UseMiddleware>b__2() [4]
MutualTlsEndpointMiddleware.<Invoke>d__4.MoveNext()
AsyncMethodBuilderCore.Start<IdentityServer4.Hosting.MutualTlsEndpointMiddleware.<Invoke>d__4>()
AsyncTaskMethodBuilder.Start<IdentityServer4.Hosting.MutualTlsEndpointMiddleware.<Invoke>d__4>()
MutualTlsEndpointMiddleware.Invoke()
[Lightweight Method Call]
UseMiddlewareExtensions.<>c__DisplayClass5_1.<UseMiddleware>b__2() [3]
AuthenticationMiddleware.<Invoke>d__6.MoveNext() [2]
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.<Invoke>d__6>() [2]
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.<Invoke>d__6>() [2]
AuthenticationMiddleware.Invoke() [2]
CorsMiddleware.Invoke() [2]
[Lightweight Method Call]
UseMiddlewareExtensions.<>c__DisplayClass5_1.<UseMiddleware>b__2() [2]
BaseUrlMiddleware.<Invoke>d__3.MoveNext()
AsyncMethodBuilderCore.Start<IdentityServer4.Hosting.BaseUrlMiddleware.<Invoke>d__3>()
AsyncTaskMethodBuilder.Start<IdentityServer4.Hosting.BaseUrlMiddleware.<Invoke>d__3>()
BaseUrlMiddleware.Invoke()
UseExtensions.<>c__DisplayClass0_2.<Use>b__2()
ApplicationBuilderAbpJwtTokenMiddlewareExtension.<>c__DisplayClass0_0.<<UseJwtTokenMiddleware>b__0>d.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Builder.ApplicationBuilderAbpJwtTokenMiddlewareExtension.<>c__DisplayClass0_0.<<UseJwtTokenMiddleware>b__0>d>()
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Builder.ApplicationBuilderAbpJwtTokenMiddlewareExtension.<>c__DisplayClass0_0.<<UseJwtTokenMiddleware>b__0>d>()
ApplicationBuilderAbpJwtTokenMiddlewareExtension.<>c__DisplayClass0_0.<UseJwtTokenMiddleware>b__0()
UseExtensions.<>c__DisplayClass0_1.<Use>b__1()
AuthenticationMiddleware.<Invoke>d__6.MoveNext() [1]
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.<Invoke>d__6>() [1]
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.<Invoke>d__6>() [1]
AuthenticationMiddleware.Invoke() [1]
CookiePolicyMiddleware.Invoke()
HttpRequestDurationMiddleware.<Invoke>d__2.MoveNext()
AsyncMethodBuilderCore.Start<Prometheus.HttpMetrics.HttpRequestDurationMiddleware.<Invoke>d__2>()
AsyncTaskMethodBuilder.Start<Prometheus.HttpMetrics.HttpRequestDurationMiddleware.<Invoke>d__2>()
HttpRequestDurationMiddleware.Invoke()
HttpRequestCountMiddleware.<Invoke>d__2.MoveNext()
AsyncMethodBuilderCore.Start<Prometheus.HttpMetrics.HttpRequestCountMiddleware.<Invoke>d__2>()
AsyncTaskMethodBuilder.Start<Prometheus.HttpMetrics.HttpRequestCountMiddleware.<Invoke>d__2>()
HttpRequestCountMiddleware.Invoke()
HttpInProgressMiddleware.<Invoke>d__2.MoveNext()
AsyncMethodBuilderCore.Start<Prometheus.HttpMetrics.HttpInProgressMiddleware.<Invoke>d__2>()
AsyncTaskMethodBuilder.Start<Prometheus.HttpMetrics.HttpInProgressMiddleware.<Invoke>d__2>()
HttpInProgressMiddleware.Invoke()
CaptureRouteDataMiddleware.Invoke()
UseWhenExtensions.<>c__DisplayClass0_1.<UseWhen>b__1()
EndpointRoutingMiddleware.Invoke()
StaticFileMiddleware.Invoke() [1]
CorsMiddleware.Invoke() [1]
[Lightweight Method Call]
UseMiddlewareExtensions.<>c__DisplayClass5_1.<UseMiddleware>b__2() [1]
RequestLocalizationMiddleware.<Invoke>d__5.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.<Invoke>d__5>()
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.<Invoke>d__5>()
RequestLocalizationMiddleware.Invoke()
AbpRequestLocalizationMiddleware.<InvokeAsync>d__4.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.RequestLocalization.AbpRequestLocalizationMiddleware.<InvokeAsync>d__4>()
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.RequestLocalization.AbpRequestLocalizationMiddleware.<InvokeAsync>d__4>()
AbpRequestLocalizationMiddleware.InvokeAsync()
UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() [2]
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d>() [2]
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d>() [2]
UseMiddlewareExtensions.<>c__DisplayClass6_1.<UseMiddlewareInterface>b__1() [2]
async OmsExportGridMiddleware.Invoke()at C:\dev\Neuca\src\aspnet-core\src\Neuca.OrderManagementSystem.HttpApi.Host\OmsExtensions\OmsExportGridMiddleware.cs:line 69
AsyncMethodBuilderCore.Start<System.__Canon>()
AsyncTaskMethodBuilder.Start<Neuca.OrderManagementSystem.HttpApi.Host.OmsExtensions.OmsExportGridMiddleware.<Invoke>d__2>()
OmsExportGridMiddleware.Invoke()
AbpCorrelationIdMiddleware.<InvokeAsync>d__3.MoveNext()
AsyncMethodBuilderCore.Start<Volo.Abp.AspNetCore.Tracing.AbpCorrelationIdMiddleware.<InvokeAsync>d__3>()
AsyncTaskMethodBuilder.Start<Volo.Abp.AspNetCore.Tracing.AbpCorrelationIdMiddleware.<InvokeAsync>d__3>()
AbpCorrelationIdMiddleware.InvokeAsync()
UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() [1]
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d>() [1]
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d>() [1]
UseMiddlewareExtensions.<>c__DisplayClass6_1.<UseMiddlewareInterface>b__1() [1]
DeveloperExceptionPageMiddleware.<Invoke>d__9.MoveNext()
AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.<Invoke>d__9>()
AsyncTaskMethodBuilder.Start<Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.<Invoke>d__9>()
DeveloperExceptionPageMiddleware.Invoke()
ForwardedHeadersMiddleware.Invoke()
HostFilteringMiddleware.Invoke()
HostingApplication.ProcessRequestAsync()
HttpProtocol.<ProcessRequests>d__223<HostingApplication.Context>.MoveNext()
AsyncTaskMethodBuilder<VoidTaskResult>.AsyncStateMachineBox<HttpProtocol.<ProcessRequests>d__223<HostingApplication.Context>>.ExecutionContextCallback()
ExecutionContext.RunInternal() [4]
AsyncTaskMethodBuilder<VoidTaskResult>.AsyncStateMachineBox<HttpProtocol.<ProcessRequests>d__223<HostingApplication.Context>>.MoveNext()
AsyncTaskMethodBuilder<VoidTaskResult>.AsyncStateMachineBox<HttpProtocol.<ProcessRequests>d__223<HostingApplication.Context>>.MoveNext()
AwaitTaskContinuation.RunOrScheduleAction() [2]
Task.RunContinuations() [2]
Task.FinishContinuations() [2]
Task<ReadResult>.TrySetResult()
AsyncTaskMethodBuilder<ReadResult>.SetExistingTaskResult()
AsyncValueTaskMethodBuilder<ReadResult>.SetResult()
StreamPipeReader.<<ReadAsync>g__Core|36_0>d.MoveNext()
AsyncTaskMethodBuilder<ReadResult>.AsyncStateMachineBox<StreamPipeReader.<<ReadAsync>g__Core|36_0>d>.ExecutionContextCallback()
ExecutionContext.RunInternal() [3]
AsyncTaskMethodBuilder<ReadResult>.AsyncStateMachineBox<StreamPipeReader.<<ReadAsync>g__Core|36_0>d>.MoveNext()
AsyncTaskMethodBuilder<ReadResult>.AsyncStateMachineBox<StreamPipeReader.<<ReadAsync>g__Core|36_0>d>.MoveNext()
AwaitTaskContinuation.RunOrScheduleAction() [1]
Task.RunContinuations() [1]
Task.FinishContinuations() [1]
Task<int>.TrySetResult()
AsyncTaskMethodBuilder<int>.SetExistingTaskResult()
AsyncValueTaskMethodBuilder<int>.SetResult()
SslStream.<ReadAsyncInternal>d__186<AsyncReadWriteAdapter>.MoveNext()
AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<SslStream.<ReadAsyncInternal>d__186<AsyncReadWriteAdapter>>.ExecutionContextCallback()
ExecutionContext.RunInternal() [2]
AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<SslStream.<ReadAsyncInternal>d__186<AsyncReadWriteAdapter>>.MoveNext()
AsyncTaskMethodBuilder<int>.AsyncStateMachineBox<SslStream.<ReadAsyncInternal>d__186<AsyncReadWriteAdapter>>.MoveNext()
ThreadPool.<>c.<.cctor>b__87_0()
ManualResetValueTaskSourceCore<int>.SignalCompletion()
PoolingAsyncValueTaskMethodBuilder<int>.SetResult()
DuplexPipeStream.<ReadAsyncInternal>d__27.MoveNext()
PoolingAsyncValueTaskMethodBuilder<int>.StateMachineBox<DuplexPipeStream.<ReadAsyncInternal>d__27>.ExecutionContextCallback()
ExecutionContext.RunInternal() [1]
PoolingAsyncValueTaskMethodBuilder<int>.StateMachineBox<DuplexPipeStream.<ReadAsyncInternal>d__27>.MoveNext()
PoolingAsyncValueTaskMethodBuilder<int>.StateMachineBox<DuplexPipeStream.<ReadAsyncInternal>d__27>.System.Threading.IThreadPoolWorkItem.Execute()
ThreadPoolWorkQueue.Dispatch()
PortableThreadPool.WorkerThread.WorkerThreadStart()
Thread.StartCallback()
[Native to Managed Transition] -
0
Api method:
[HttpGet("")] public async Task<PagedResultDto<SearchDeficitListDto>> SearchDeficitList([FromQuery] SearchDeficitList model) { var query = new SearchDeficitListQuery(model.CustomerIds, model.MaterialIds, model.FilterText, model.MaxResultCount, model.SkipCount, model.Sorting); var result = await _mediator.Query<SearchDeficitListQuery, PagedResultDto<SearchDeficitListDto>>(query); return result; }
Query is consumed by MassTransit IConsumer. In consumer we use Dapper to retrieve data and return it to the controller.
-
0
You can try to set language to
en
I think the redis call will be fine.I open a PR https://github.com/abpframework/abp/pull/12363
The main reason is that
pl-PL
lacks localization texts.