Вызов обработчика CreateUserComand в фильтреC#

Место общения программистов C#
Ответить
Anonymous
 Вызов обработчика CreateUserComand в фильтре

Сообщение Anonymous »

Я пытаюсь вызвать дескриптор, чтобы вернуть значения с уровня приложения. Я использую шаблон посредника. Я пробовал позвонить, но не смог из-за отсутствия опыта.
Конечная точка:

Код: Выделить всё

using CleanAchitecture.Security.Api.Filters;
using CleanAchitecture.Security.Application.Abstractions.Messaging;
using CleanAchitecture.Security.Application.Contracts.User;
using CleanAchitecture.Security.Application.User;
using Microsoft.AspNetCore.Mvc;

namespace CleanAchitecture.Security.Api.Endpoints
{
internal sealed class User : IEndpoint
{
public void MapEndpoint(IEndpointRouteBuilder app)
{
app.MapPost("todos", async (
CreateUserRequest request,
[FromServices] ICommandHandler handler,
CancellationToken cancellationToken) =>
{

var result = await handler.Handle(new CreateUserComand { CreateUserRequest = request }, cancellationToken);

return result;
})
.AddEndpointFilter(new AuthorizationFilter("apiii"));//Here
}
}
}
< /code>
Это фильтр, который я хочу выполнить команду, чтобы вернуть значение, если оно является действительным или нет. < /p>

«createUserComand» не содержит определения для «ручки», а также метод доступного расширения, который принимает первый аргумент «CreateUsercome» (вы не упускаете в виду или используют, используете ли вы, используете Pired Extension Dipective или Asseive, используйте PIRTIVE или ASTARIVIVIVIVE или ASTARIVIN /> < /blockquote>
using CleanAchitecture.Security.Application.User;
using CleanAchitecture.Security.Domain.Common;
using System.Threading;

namespace CleanAchitecture.Security.Api.Filters
{
public class AuthorizationFilter(string api) : IEndpointFilter
{
public async ValueTask InvokeAsync(EndpointFilterInvocationContext context, EndpointFilterDelegate next)
{

var handler = new CreateUserComand();

var result = await handler.Handle(new CreateUserComand { CreateUserRequest = request });
if(result != null) return await next(context);

return Result.BadRequest();
}
}
}
createUserCommand :

Код: Выделить всё

using CleanAchitecture.Security.Application.Abstractions.Messaging;
using CleanAchitecture.Security.Application.Contracts.User;
using CleanAchitecture.Security.Domain.Common;
using CleanAchitecture.Security.Domain.Entities;
using CleanAchitecture.Security.Infrastructure.Interface;
using FluentValidation;

namespace CleanAchitecture.Security.Application.User
{
#region command
public sealed record CreateUserComand : ICommand
{
public CreateUserRequest CreateUserRequest { get; set; }
};
#endregion

#region command handler
internal sealed class CreateUserCommandHandler(
IUserRepository IUserRepository
)
: ICommandHandler
{
public async Task Handle(CreateUserComand command, CancellationToken cancellationToken)
{
var securityUser = new SecurityUser
{
Id = "",
Name = command.CreateUserRequest.Name,
Password = command.CreateUserRequest.Password,
ProfileId = command.CreateUserRequest.ProfileId,

DateCreated = DateTimeOffset.UtcNow,
DateModified = DateTimeOffset.UtcNow
};

await IUserRepository.AddAsync(securityUser);

return Result.OK();
}
}
#endregion

#region command validator
internal sealed class CreateUserCommandValidator : AbstractValidator
{
public CreateUserCommandValidator()
{
RuleFor(c => c.CreateUserRequest.Name).NotEmpty();
RuleFor(c => c.CreateUserRequest.Password).NotEmpty();
RuleFor(c => c.CreateUserRequest.ProfileId).NotEmpty();
}
}
#endregion
}
Не могли бы вы помочь мне устранить эту ошибку?

Подробнее здесь: https://stackoverflow.com/questions/797 ... -in-filter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»