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
- Add ConfigurePolicy method to AbpOperationRateLimitingOptions for
partial modification of existing policies without full replacement
- Add ClearRules method to OperationRateLimitingPolicyBuilder for
clearing inherited rules before defining new ones
- Add FromPolicy factory method to reconstruct a builder from an
existing policy
- Change AddPolicy return type to AbpOperationRateLimitingOptions
for chaining consistency with ConfigurePolicy
- Add parameter validation to AddPolicy and FromPolicy
- Add documentation for overriding existing policies
- Add tests for ConfigurePolicy, ClearRules, chaining, and error cases
Updated documentation to specify that if a chat client is not configured for a workspace, the default workspace's chat client is returned, and null is only returned if neither is configured.
Replaces all references to 'authorization.md' with 'authorization/index.md' across documentation files to reflect the new file structure. This ensures all internal links to the authorization documentation remain valid after the file was moved and renamed.
Registered ExtensibleTableRowDetailComponent in ExtensibleModule and updated documentation to reference the new row detail feature. Also improved accessibility and semantics by replacing the expand/collapse anchor with a button in the extensible table component template.