.net core - Middleware не обрабатывает запросы - PullRequest
0 голосов
/ 14 сентября 2018

У меня проблема с промежуточным ПО в .Net Core 2. Промежуточное программное обеспечение не обрабатывает поступающие запросы.Что я реализовал.

Класс KeyValidatorMiddleware:

public class KeyValidatorMiddleware
{
    private readonly RequestDelegate _next;

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

    public async Task Invoke(HttpContext context)
    {

        if (!context.Request.Headers.ContainsKey("api-key"))
        {
            context.Response.StatusCode = 401;
            await context.Response.WriteAsync("No API key found !");
            return;
        }

        await _next.Invoke(context);
    }
}

и в Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseMvc();
    app.UseCors("MyPolicy");
    app.UseMiddleware<KeyValidatorMiddleware>();
}

И ничего не работает, Чего мне не хватает, чтобы сделатьпромежуточное программное обеспечение работает?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Вы должны переместить строку UseMiddleware, чтобы быть ближе к вершине, промежуточное программное обеспечение работает в порядке, и оно может остановиться на уровне MVC.

Например:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    app.UseMiddleware<KeyValidatorMiddleware>();

    app.UseHttpsRedirection();
    app.UseMvc();
    app.UseCors("MyPolicy");
}
0 голосов
/ 14 сентября 2018

Регистрация промежуточного программного обеспечения заказана.Таким образом, все, что вы зарегистрируете до MVC, будет выполняться до MVC.

MVC обрабатывает запрос, если он соответствует URL, который может обработать MVC.Все, что вы зарегистрируете после MVC, будет обрабатывать запрос только в том случае, если MVC не соответствует URL.

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