.NET — промежуточное программное обеспечение Wolverine с возвращаемым значениемC#

Место общения программистов C#
Ответить
Anonymous
 .NET — промежуточное программное обеспечение Wolverine с возвращаемым значением

Сообщение Anonymous »

Я перехожу с MediatR на Wolverine. Это удобно использовать. Однако я столкнулся с одной проблемой. Я хочу добавить промежуточное программное обеспечение для проверки авторизации перед использованием обработчика. Что тоже не проблема. Но проблема в том, чтобы вернуть какой-то результат непосредственно из промежуточного программного обеспечения. Что обычно возможно в MediatR (поведение).
Итак, вопрос в том, есть ли какой-нибудь элегантный способ вернуть результат непосредственно из промежуточного программного обеспечения?
Я прочитал документацию по росомахе, попробовал все возможные варианты, и ничего не помогло. Если не ошибаюсь, можно вернуть результат промежуточного программного обеспечения как параметр обработчика, но мне это кажется крайне некрасивым. Тогда мне пришлось бы проверять каждый обработчик, содержит ли он что-то и т. д. и другие проблемы.
Я не хочу использовать библиотеку Wolverine.HTTP. Я буду использовать эту логику не только в WebApi, но и в других местах.
OutputDto

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

public class OutputDto
{
public bool Valid { get; set; }
}
MyHandler

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

public class MyHandler
{
public Task Handle(InputDto input)
{
return Task.FromResult(new OutputDto() { Valid = true });
}
}
MyMiddleware

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

public class MyMiddleware
{
public async Task BeforeAsync(InputDto input)
{
return (HandlerContinuation.Stop, new OutputDto() { Valid = false });
}
}
Контроллер — действие вызывает промежуточное ПО и возвращает ноль

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

private readonly IMessageBus _bus;

public WeatherForecastController(IMessageBus bus)
{
_bus = bus;
}

[HttpGet(Name = "GetWeatherForecast")]
public async Task Get()
{
var a = await _bus.InvokeAsync(new InputDto { Id = 5 });

return a;
}
Регистрация

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

builder.UseWolverine(options =>
{
options.Policies.AddMiddleware();
});
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/796 ... turn-value
Ответить

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

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

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

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

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