Я создаю фильтр ресурсов для регистрации тела почтового запроса на .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();
}