У меня есть web-api с mvc, который выполняет кучу инициализации при запуске, которая займет несколько минут. Я хочу, чтобы URL отвечал на запрос в течение этого времени с индикатором прогресса. Я думал об использовании промежуточного программного обеспечения для достижения чего-то вроде этого:
public async Task Invoke(HttpContext httpContext)
{
await httpContext.Response.WriteAsync("Loading...");
await Task.Delay(5000); // the initialization-stuff (which is not started here but just waited on)
httpContext.Response.Clear();
await _next(httpContext); // continue to my MVC-page
}
Однако, похоже, это не работает (ERR_INCOMPLETE_CHUNKED_ENCODING
). Как правильно очистить / сбросить ответ, чтобы я мог написать новый реальный ответ после завершения инициализации.
Вместо этого я прибегнул к чему-то вроде этого (достаточно хорошо):
public async Task Invoke(HttpContext httpContext)
{
if (!task.IsCompleted)
await httpContext.Response.WriteAsync("Loading...");
else
await _next(httpContext); // continue...
}