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
- Assign AppInfoProvider before calling IpcServer.Start()
- Use HeadlessIpcHost or the GUI host instead of a bare IpcServer
- 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
- Never serve on a bare IpcServer; use the provided hosts
- Assign all capability delegates before Start()
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
- GitHub sign-in is not configured for this build. UNIGETUI_GI
- The Unix socket path is not available for the named-pipe tra
- The IPC API token is not available. Start UniGetUI and try a
- Custom manager paths are disabled by secure settings.
- GitHub request failed with HTTP {(int)response.StatusCode} (
AI-assisted analysis of Devolutions/UniGetUI@9b1d7d0eab (2026-08-13).
Data as JSON: /api/errors/d460b6cd3963b824.
Report an issue: GitHub.