Miroslav Holec
Premium

Nefunkční stream rendering v App Service

Miroslav Holec   7. května 2024

Stream Rendering je power feature v Blazoru. Všude funguje spolehlivě, ale v Azure App Service z neznámého důvodu ne. Po delším zkoumání jsem zjistil, že podobný problém má v různých situacích mnoho vývojářů. Když Stream Rendering nefunguje, čeká se na provedení celé metody OnInitializedAsync a teprve poté se aktualizuje DOM finálním HTML.

Jednotný lék je přenastavit Content-Encoding. Na začátek middleware pipeline jsem tedy přidal middleware, který hlavičku nastaví (nemá to dále nemá vliv na statické soubory, API response atd.). Hodnota identity indikuje, že se žádná komprese nepoužije.

public class ContentEncodingMiddleware(RequestDelegate next)
{
    public async Task InvokeAsync(HttpContext context)
    {
        context.Response.Headers.Append(HeaderNames.ContentEncoding, "identity");

        await next(context);
    }
}

Pokud někdo něco podobného řeší, další přičinou může být i response buffering, který je pro stream rendering též nežádoucí.