Регистрация Middleware, который нуждается в услугах - PullRequest
0 голосов
/ 22 мая 2019

Я пишу промежуточное программное обеспечение, которое требует регистрации нескольких зависимостей в определенной области.Есть ли способ зарегистрировать это промежуточное ПО, не добавляя код в методы ConfigureServices и Configure Startup.cs?

1 Ответ

0 голосов
/ 22 мая 2019

Нет. Сервисы и Middlewares не совпадают. И нет способа внедрить какой-либо сервис до того, как контейнер DI узнает об этом. Другими словами, нам нужно зарегистрировать эти сервисы, прежде чем мы внедрим их в промежуточное ПО.

Вместо этого вы можете создать промежуточное программное обеспечение по соглашению:

public class ConventionalMiddleware
{
    private readonly RequestDelegate _next;

    public ConventionalMiddleware(RequestDelegate next){
        _next = next;
    }

    public async Task InvokeAsync(HttpContext context, Service1 s1, Service2 s2, ...)
    {

        // ...
    }
}

и UseMiddleware<ConventionalMiddleware>() в пределах Configure() поднимут вес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...