.NetCore Pipeline - фильтр ресурсов вызывается дважды за запрос - PullRequest
0 голосов
/ 08 июля 2019

Я создаю фильтр ресурсов для регистрации тела почтового запроса на .net core 2.2, но я сталкиваюсь с очень странной проблемой, потому что он вызывается дважды при каждом запросе.

Я просмотрелfiddler, чтобы быть уверенным в том, что один запрос был отправлен на сервер.

После этого я предоставил код фильтра и реестра на конвейере Mvc, а также метод настройки при запуске.

Спасибо заранее, и если я пропустил некоторую информацию, пожалуйста, скажите мне.

Реестр фильтров:

services.AddMvc(options =>
            {
                options.Filters.Add(options.Filters.Add(typeof(ApiPostLogFilter)));
            }).SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_2_2)
            .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

Код фильтра ресурсов:

 public class ApiPostLogFilter : IAsyncResourceFilter
    {
        ApiRequestLogService _apiRequestLogService;

        public ApiPostLogFilter(ApiRequestLogService ApiRequestLogService)
        {
            _apiRequestLogService = ApiRequestLogService;
        }

        public async Task OnResourceExecutionAsync(ResourceExecutingContext context, ResourceExecutionDelegate next)
        {
            await ApiPostRequestLogHelper.LogPostRequest(context.HttpContext, _apiRequestLogService);
            await next.Invoke();
        }
    }

Настроить метод:

  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseMiddleware<ExceptionMiddleware>();
            }

            //Config para que não haja timeout no Redis.
            ThreadPool.SetMinThreads(1000, 1000);        

            app.UseEndpointRouting();
            app.UseMiddleware<TenantIdentifierStartupMiddleware>();
            app.UseMiddleware<MiniProfilerMiddleware>();
            app.UseMvc();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...