Extract override method resolution logic into a reusable GetEffectiveMethodInfo helper to avoid duplication.
Use the resolved override method in ValidateActionArgumentsAsync so that IMethodInvocationValidator validates
against the concrete method on the controller type, not the base method from ActionDescriptor.
Remove unused imports in FluentValidationTestAppService_Tests.
When Application Services are registered via ConventionalControllers.Create(),
their types are added to DynamicProxyIgnoreTypes, which disables the
ValidationInterceptor. The AbpValidationActionFilter only checked ModelState
(DataAnnotations), so FluentValidation rules were never executed.
Add IValidationEnabled check in AbpValidationActionFilter to call
IMethodInvocationValidator for conventional controllers, enabling
FluentValidation support without duplicating validation for regular controllers.
Resolve#23457
Refactored GetOrAddMany and GetOrAddManyAsync in DistributedCache to ensure returned key-value pairs are correctly mapped by key, regardless of order from the factory. Added unit tests to verify correct mapping and concurrency behavior.
Updated ChatClientAccessor and TypedChatClient to fallback to the default chat client if a workspace-specific client is not configured. Adjusted tests to verify that the default chat client is resolved for non-configured workspaces.
Introduced the GetObjectKey method to MyEntity, returning the string representation of the entity's Id. This may be used for scenarios requiring a unique key in string format.
- Build an object download link using 'PresignedGetObjectAsync' and directly download the network stream through 'HttpClient'.
- ` MinioBlobProviderConfiguration ` add a ` PresignedGetExpirySeconds ` configuration items, used to configure expiration time component link, the default is 7 days.
Added transient registration for IChatClientAccessor<> in AbpAIModule. Updated ChatClientAccessor to implement ITransientDependency and removed TryRegister from dependency attribute. Introduced unit tests for ChatClientAccessor resolution and behavior. Adjusted MockChatClient's StreamingResponseParts constant for test consistency.