Skip to content

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 IsWebApplicationEnabled export). These versions ship a wasclnt.dll that predates the enabled-state query, so df-cli cannot 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 → stopped only when the app is configured to keep a resident worker while enabled — i.e. the connector pool is on (UseConnectorPool=1) and MinPool >= 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=0 or MinPool=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.

unknown means the state is undeterminable on this version, not that the app is faulty: such apps still install, compile (e.g. via df-cli build / --restart-webapp), and run exactly as on 26.0+. Versions 26.0 and later export the query and report their true running/stopped state 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, and restart require 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_MACHINE requires elevated privileges. Run df-cli as Administrator when using enable or disable.

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