Skip to main content


class EnsLib.DotNetGateway.Service extends Ens.BusinessService

A service responsible for starting, monitoring and stopping the .NET Gateway Server in a production.

Property Inventory

Method Inventory


parameter ADAPTER = EnsLib.DotNetGateway.ServiceAdapter;
This adapter does not handle communication with external systems, it's for internal use of this class only.
parameter DOTNETGATEWAYEXE = DotNetGatewaySS;
.NET Gateway Server executable name.
parameter PIPEREADTIMEOUT = 10;
This timeout should work in most if not all cases.
parameter SETTINGS = DotNetServer:Basic,Port:Basic,AllowedIPAddresses,Exec64,DotNetVersion,FilePath:Basic,Logfile,UsePassphrase,HeartbeatInterval,HeartbeatFailureTimeout,HeartbeatFailureAction,HeartbeatFailureRetry,-ArchiveIO;
Inherited description: List of properties can be set as settings in the configuration file format is a comma separated list of property names


property AllowedIPAddresses as %String [ InitialExpression = "" ];
Which IP address, among the several IP addresses that the machine has, that allows incoming connections. Specify or null to listen on all IP addresses local to the machine (, VPN address, etc.). You can also specify a single existing local IP address to restrict the listener to that IP address.
Property methods: AllowedIPAddressesDisplayToLogical(), AllowedIPAddressesGet(), AllowedIPAddressesIsValid(), AllowedIPAddressesLogicalToDisplay(), AllowedIPAddressesLogicalToOdbc(), AllowedIPAddressesNormalize(), AllowedIPAddressesSet()
property DotNetServer as %String [ InitialExpression = "" ];
IP address or name of the machine where the .NET Gateway Server executable is located.
Property methods: DotNetServerDisplayToLogical(), DotNetServerGet(), DotNetServerIsValid(), DotNetServerLogicalToDisplay(), DotNetServerLogicalToOdbc(), DotNetServerNormalize(), DotNetServerSet()
property DotNetVersion as %String (DISPLAYLIST = ",2.0,4.0,4.5", VALUELIST = ",2.0,4.0,4.5") [ InitialExpression = "2.0" ];
.NET version, used to select the intended directory for the target external executable.
Property methods: DotNetVersionDisplayToLogical(), DotNetVersionGet(), DotNetVersionIsValid(), DotNetVersionLogicalToDisplay(), DotNetVersionLogicalToOdbc(), DotNetVersionNormalize(), DotNetVersionSet()
property Exec64 as %Boolean [ InitialExpression = 0 ];
On 64-bit platforms, indicates if the Gateway server is to be executed as 32-bit (default) or 64-bit.
Property methods: Exec64DisplayToLogical(), Exec64Get(), Exec64IsValid(), Exec64LogicalToDisplay(), Exec64Normalize(), Exec64Set()
property FilePath as %String (MAXLEN = 1023);
Location of the .NET Gateway Server executable. It is used to find the target executable and assemble the command to start the .NET Gateway on a local server.
If this setting is not specified, the default directory used is ...\Dev\dotnet\bin\ under the Ensemble installation directory.
Property methods: FilePathDisplayToLogical(), FilePathGet(), FilePathIsValid(), FilePathLogicalToDisplay(), FilePathLogicalToOdbc(), FilePathNormalize(), FilePathSet()
property HeartbeatFailureAction as %String (DISPLAYLIST = ",None,Restart,Alert,Restart and Alert", VALUELIST = ",,R,A,RA") [ InitialExpression = "R" , Required ];
What action(s) to take if the .NET Gateway Server goes into failure state. Setting it to Restart (default) will cause the .NET Gateway to be restarted. Setting it to Alert will generate an alert entry in the Event Log.
Note 1: This is independent of the Alert on Error setting.
Note 2: If DotNetServer points to a remote system, this feature must not restart the server; only alerts may be generated.
See also properties HeartbeatInterval, HeartbeatFailureTimeout and HeartbeatFailureRetry.
Property methods: HeartbeatFailureActionDisplayToLogical(), HeartbeatFailureActionGet(), HeartbeatFailureActionIsValid(), HeartbeatFailureActionLogicalToDisplay(), HeartbeatFailureActionLogicalToOdbc(), HeartbeatFailureActionNormalize(), HeartbeatFailureActionSet()
property HeartbeatFailureRetry as %Integer (MAXVAL = 86400, MINVAL = 0) [ InitialExpression = 300 ];
In case the .NET Gateway Server goes into failure state, and stays in failure state, how much time to wait before retrying the HeartbeatFailureAction. The default value is 300 seconds (5 minutes). A value of 0 disables this retry, meaning that once there is a failure that can't be immediately recovered, there won't be automatic attempts to recovery.
See also properties HeartbeatInterval, HeartbeatFailureTimeout and HeartbeatFailureAction.
Property methods: HeartbeatFailureRetryDisplayToLogical(), HeartbeatFailureRetryGet(), HeartbeatFailureRetryIsValid(), HeartbeatFailureRetryLogicalToDisplay(), HeartbeatFailureRetryNormalize(), HeartbeatFailureRetrySet()
property HeartbeatFailureTimeout as %Integer (MAXVAL = 86400, MINVAL = 0) [ InitialExpression = 30 ];
Number of seconds without responding to the heartbeat, to consider that the .NET Gateway Server is in failure state. If this value is smaller than property HeartbeatInterval, it will be considered in failure state every time the .NET Gateway communication check fails. The default is 30 seconds. The maximum value is 86400 seconds (1 day).
See also properties HeartbeatInterval, HeartbeatFailureAction and HeartbeatFailureRetry.
Property methods: HeartbeatFailureTimeoutDisplayToLogical(), HeartbeatFailureTimeoutGet(), HeartbeatFailureTimeoutIsValid(), HeartbeatFailureTimeoutLogicalToDisplay(), HeartbeatFailureTimeoutNormalize(), HeartbeatFailureTimeoutSet()
property HeartbeatInterval as %Integer (MAXVAL = 3600, MINVAL = 0) [ InitialExpression = 10 ];
Number of seconds between each communication with the .NET Gateway Server to check if it is active. The default is 10 seconds. When enabled, the minimum value is 5 seconds and the maximum value is 3600 seconds (1 hour).
A value of 0 disables the monitoring feature; in this case, if the Gateway goes down, the status indicator color in the Production Configuration page will not be automatically updated.
See also properties HeartbeatFailureTimeout, HeartbeatFailureAction and HeartbeatFailureRetry, which only apply if monitoring is enabled.
Property methods: HeartbeatIntervalDisplayToLogical(), HeartbeatIntervalGet(), HeartbeatIntervalIsValid(), HeartbeatIntervalLogicalToDisplay(), HeartbeatIntervalNormalize(), HeartbeatIntervalSet()
property Logfile as %String (MAXLEN = 1023);
Fully qualified name of a file to log all communication between Ensemble and the .NET Gateway Server. Usually this setting should be left blank, and used only for trouble-shooting.
Property methods: LogfileDisplayToLogical(), LogfileGet(), LogfileIsValid(), LogfileLogicalToDisplay(), LogfileLogicalToOdbc(), LogfileNormalize(), LogfileSet()
property Port as %String [ InitialExpression = "55000" ];
TCP port number for communication between the .NET Gateway Server and the proxy classes in Ensemble.
Property methods: PortDisplayToLogical(), PortGet(), PortIsValid(), PortLogicalToDisplay(), PortLogicalToOdbc(), PortNormalize(), PortSet()
property UsePassphrase as %Boolean [ InitialExpression = 0 ];
If Gateway is to be started requiring a passphrase for connection
Property methods: UsePassphraseDisplayToLogical(), UsePassphraseGet(), UsePassphraseIsValid(), UsePassphraseLogicalToDisplay(), UsePassphraseNormalize(), UsePassphraseSet()


classmethod ConnectGateway(pEndpoint As %String, ByRef pGateway As %Net.Remote.Gateway, pTimeout As %Numeric = 5, pAdditionalPaths As %String = "") as %Status
Connect to a running .NET Gateway Server.
method OnInit() as %Status
Upon instantiating this service, adjust some properties and start the .NET Gateway Server.
method OnProcessInput(pInput As %Library.RegisteredObject, pOutput As %Library.RegisteredObject, ByRef pHint As %Library.String) as %Status
This service does not actually handle input data. The call interval is used as the heartbeat interval if enabled.
method OnTearDown() as %Status
Shutdown the .NET Gateway Server.
classmethod PingDotNetGateway(pPort As %String, pServer As %String = "") as %Status
"Ping" the .NET Gateway Server to check if it's alive.
classmethod RunCommandViaCPIPE(pCmd As %String, Output pDevice, Output pOutput, pTimeout As %Numeric = 10, Output pRetCode As %String, ByRef pCmdArgs) as %Status
Execute OS command asynchronously.
classmethod RunDotNet(pFilePath As %String = "", pPort As %String = "", pAllowedIPAddresses As %String = "", pLogfile As %String = "", ByRef pDevice As %String = "", pExec64 As %Boolean = 0, pVersion As %String = "2.0", pUsePassphrase As %Boolean = 0, ByRef pPassphraseList As %String = "") as %Status
Assemble the command to start the .NET Gateway Server based on the settings, and execute the command.
classmethod StartGateway(pFilePath As %String, pPort As %String, pAllowedIPAddresses As %String, pLogfile As %String = "", ByRef pDevice As %String = "", pServer As %String = "", pExec64 As %Boolean = 0, pVersion As %String = "2.0", pUsePassphrase As %Boolean = 0) as %Status
Start up the .NET Gateway Server.
classmethod StopGateway(pPort As %String, pServer As %String = "", pTimeout As %Numeric = 5) as %Status
Shutdown the Gateway.

Inherited Members

Inherited Properties

Inherited Methods

FeedbackOpens in a new tab