Разделенный ответ функции Azure не может быть загружен в Chrome ERR_INCOMPLETE_CHUNKED_ENCODING - PullRequest
0 голосов
/ 21 октября 2018

Я создаю функцию Azure, которая возвращает частичный ответ (используя await response.WriteAsync(...)).Когда я открываю URL-адрес функции Azure в Chrome, я получаю сообщение об ошибке: Chunked: 1 GET http://localhost:7071/api/Chunked net :: ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)

Эта ошибка возникает в большинстве случаев, ноиногда я получаю правильный результат.Однако когда я открываю тот же URL-адрес из Edge, ответ всегда загружается правильно.Я запускаю код локально из Visual Studio 15.8.7, Function Runtime Version: 2.0.12134.0,

Я создал минимальное repro:

[FunctionName("Chunked")]
public static async Task Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
    ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");
    var res = req.HttpContext.Response;
    res.StatusCode = 200;
    var token = " Lorem ipsum ";
    await res.WriteAsync(token);

    for (int i = 0; i < 100; i++)
    {
        token += token;
        if (token.Length > 2000)
            token = " Lorem ipsum ";
        await res.WriteAsync(i + token + "\n");         
        await Task.Delay(10); // Simulate wait for another record
    }
}

Мой код более сложный, потому что ончитает содержимое из базы данных, но я имитировал его с помощью Task.Delay.

1 Ответ

0 голосов
/ 24 октября 2018

ASP.NET :

Попробуйте установить для req.HttpContext.Response.BufferOutput значение false.Буферизация ответа может помешать правильному разбиению ответа.

Для ASP.NET Core , похоже, подходит:

private void DisableResponseBuffering(HttpContext context)
{
    IHttpBufferingFeature bufferingFeature = context.Features.Get<IHttpBufferingFeature>();
    if (bufferingFeature != null)
    {
        bufferingFeature.DisableResponseBuffering();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...