WebApp Server Management
The webapp command group lets you inspect and control DataFlex WebApp Server applications registered on the local machine. All operations are Windows-only. On non-Windows platforms, webapp list succeeds with a warning that Windows is required and returns an empty result; named management commands (start, stop, restart, enable, and disable) fail because no applications are available.
Application IDs
Each registered application has an identifier in the form <version>/<name>, for example 99.0/WebOrder. IDs are case-insensitive and appear in the ID column of webapp list.
Listing Applications
df-cli webapp [list]
Displays all WebApp Server applications discovered across every installed DataFlex version. Running df-cli webapp with no subcommand is equivalent to df-cli webapp list (usage is also printed).
Example output:
ID Status Program Path
--------------------------------------------------------------------------------
99.0/WebOrder running C:\dev\Examples\WebOrder\Programs\WebApp.exe
99.0/WebOrderMobile stopped C:\dev\Examples\WebOrderMobile\Programs\WebApp.exe
25.0/WebOrder service-stopped C:\dev\Examples\25\WebOrder\Programs\WebApp.exe
Status values
| Status | Meaning |
|---|---|
running |
The application is accepting sessions. |
stopped |
The application is stopped in-memory (transient — resets when the WebApp Server service restarts). On DataFlex versions before 26.0 this can also be probe-derived — see note below. |
disabled |
The application is persistently disabled in the registry (Disable=1). The service will not load it on startup. |
service-stopped |
The DataFlex WebApp Server Windows service for this version is installed but not running. |
missing-wasclnt |
wasclnt.dll was not found in the DataFlex installation directory for this version. Start/stop/enable/disable are unavailable. |
unknown |
The live enabled state could not be determined. Common on DataFlex versions before 26.0 when no resident worker pool is configured (see note below). |
Versions whose WebApp Server service is not installed at all are suppressed from the list — they represent stale registry entries from uninstalled DataFlex versions.
Status on DataFlex < 26.0 (no
IsWebApplicationEnabledexport). These versions ship awasclnt.dllthat predates the enabled-state query, sodf-clicannot read the live state directly. It falls back to a no-admin liveness probe: it checks whether a worker process is currently running the app's executable.
- A worker is running it →
running.- No worker is running it →
stoppedonly when the app is configured to keep a resident worker while enabled — i.e. the connector pool is on (UseConnectorPool=1) andMinPool >= 1. In that configuration a running app always has a warm worker, so its absence means the app is stopped.- No worker and no resident pool is expected (
UseConnectorPool=0orMinPool=0, the default) →unknown: an enabled-but-idle app legitimately has zero workers, so worker absence is ambiguous.- Any probe error (file missing, access denied, …) →
unknown.
unknownmeans the state is undeterminable on this version, not that the app is faulty: such apps still install, compile (e.g. viadf-cli build/--restart-webapp), and run exactly as on 26.0+. Versions 26.0 and later export the query and report their truerunning/stoppedstate directly.
Transient Control (Start / Stop / Restart)
These commands modify the application's in-memory state inside the running WebApp Server service. The state resets when the service is restarted.
webapp start
df-cli webapp start <id>
Starts the specified application (enables it in the running service's session manager).
| Argument | Description |
|---|---|
<id> |
Application identifier, e.g. 99.0/WebOrder. |
webapp stop
df-cli webapp stop <id>
Stops the specified application. This is a blocking call — it waits until all active worker processes have exited before returning.
| Argument | Description |
|---|---|
<id> |
Application identifier, e.g. 99.0/WebOrder. |
webapp restart
df-cli webapp restart <id>
Stops then starts the specified application (equivalent to stop followed by start).
| Argument | Description |
|---|---|
<id> |
Application identifier, e.g. 99.0/WebOrder. |
Note:
start,stop, andrestartrequire the WebApp Server service for the application's DataFlex version to be running. If the service is stopped they have no effect.
Persistent Control (Enable / Disable)
These commands write the Disable flag in the Windows registry. The change survives service restarts and takes effect the next time the service reads its configuration.
Administrator required. Writing to
HKEY_LOCAL_MACHINErequires elevated privileges. Rundf-clias Administrator when usingenableordisable.
webapp enable
df-cli webapp enable <id>
Persistently enables the specified application by setting Disable=0 in the registry. Does not immediately start the application in-memory — use webapp start for that.
| Argument | Description |
|---|---|
<id> |
Application identifier, e.g. 99.0/WebOrder. |
webapp disable
df-cli webapp disable <id>
Persistently disables the specified application by setting Disable=1 in the registry. Does not immediately stop any active sessions — use webapp stop first if needed.
| Argument | Description |
|---|---|
<id> |
Application identifier, e.g. 99.0/WebOrder. |
Two-Layer Control Model
The WebApp Server has two independent control planes:
| Layer | Commands | Scope | Requires service |
|---|---|---|---|
| In-memory (transient) | start, stop, restart |
Until service restarts | Yes |
| Registry (persistent) | enable, disable |
Survives service restarts | No |
A typical workflow for taking an application fully offline:
df-cli webapp stop 99.0/WebOrder # stop accepting new sessions now
df-cli webapp disable 99.0/WebOrder # prevent it from loading after next restart
To bring it back:
df-cli webapp enable 99.0/WebOrder # allow it to load on next service restart
df-cli webapp start 99.0/WebOrder # start accepting sessions immediately