Progressive isolation harness (Part 1, outside the VPN). Pick a version, then run the same PDF/image files from each phone. Each step adds one layer over the previous.
O1A native multipart <form> HTTP POST — no Blazor, no JavaScript.
Proves the device + browser + network + IIS path can move bytes at all.
One InputFile reading over the SignalR circuit
(render-mode="Server", prerender off). Isolates the Blazor Server upload mechanism —
no MudBlazor, no layering.
Faithful condensed copy of the real ClientPortal app: Blazor Server + MudBlazor,
layered Data/Services/Shared/Web, the same Select → Preview → Submit flow, in-memory byte[],
the KeepAlive circuit hack, and the accept list without HEIC.