Devolutions/UniGetUI · error · InvalidOperationException

The application did not register an app-state provider.

Error message

The application did not register an app-state provider.

What it means

V3_GetAppInfo throws when AppInfoProvider is null: the host never registered a delegate describing its application state. Both the GUI host and HeadlessIpcHost assign AppInfoProvider, so a null provider means a bare or not-yet-configured IpcServer instance is serving requests.

Source

Thrown at src/UniGetUI.Interface.IpcApi/IpcServer.cs:481

            await context.Response.WriteAsJsonAsync(
                IpcManagerSettingsApi.ListManagers(),
                IpcJson.Options
            );
        }

        private async Task V3_GetAppInfo(HttpContext context)
        {
            if (!AuthenticateToken(context.Request.Query["token"]))
            {
                context.Response.StatusCode = 401;
                return;
            }

            try
            {
                await context.Response.WriteAsJsonAsync(
                    AppInfoProvider?.Invoke()
                        ?? throw new InvalidOperationException(
                            "The application did not register an app-state provider."
                        ),
                    IpcJson.Options
                );
            }
            catch (InvalidOperationException ex)
            {
                context.Response.StatusCode = 400;
                await context.Response.WriteAsync(ex.Message);
            }
        }

        private async Task V3_ShowApp(HttpContext context)
        {
            await HandleCommandAsync(
                context,
                () =>
                    ShowAppHandler?.Invoke()

View on GitHub (pinned to 9b1d7d0eab)

Solutions

  1. Assign AppInfoProvider before calling IpcServer.Start()
  2. Use HeadlessIpcHost or the GUI host instead of a bare IpcServer
  3. Gate requests until the host reports initialized

Example fix

// before
var server = new IpcServer();
await server.Start(); // AppInfoProvider never set
// after
var server = new IpcServer { AppInfoProvider = BuildAppInfo };
await server.Start();
Defensive patterns

Strategy: validation

Validate before calling

// Host side: assert wiring before Start
if (server.AppInfoProvider is null)
    throw new InvalidOperationException("AppInfoProvider must be set before Start()");

Prevention

When it happens

Trigger: Calling /app-info against a server constructed without assigning AppInfoProvider, or before host initialization completes.

Common situations: A custom embedding creates an IpcServer but skips handler wiring; a request races in before Start() finishes setup.

Related errors


AI-assisted analysis of Devolutions/UniGetUI@9b1d7d0eab (2026-08-13). Data as JSON: /api/errors/d460b6cd3963b824. Report an issue: GitHub.