Skip to content

Configuration

The Environment API is the primary configuration source for this host: every setting the service reads at run time is reached through IEnvironmentService.GetConfigSetting, resolved per request from the caller's OperationContext, never from a process-wide static or the build.

Environment API settings

Key Retrieval method Consuming class Secure Purpose
uc4.rules _envSvc.GetConfigSetting("uc4.rules"), result deserialized as UC4JobRules via JsonConvert.DeserializeObject UC4Service.IsJobAllowed (UC4Service.cs:55-56) No The allow/deny rule document that gates every job execution. Appears in no file in this repository — it is an environment-service setting only.
uc4coreapi.url (composed from EnvironmentConstants.UC4CoreApiSettingGroup + . + EnvironmentConstants.ServiceUrlKey) env.GetConfigSetting<string>($"{EnvironmentConstants.UC4CoreApiSettingGroup}.{EnvironmentConstants.ServiceUrlKey}") UC4Client constructor (Uc4Client.cs:24) No Address of the downstream UC4 service the host forwards jobs to
uc4coreapi.schedulejobroute (composed from UC4CoreApiSettingGroup + . + ScheduleJobRouteKey) env.GetConfigSetting<string>($"{EnvironmentConstants.UC4CoreApiSettingGroup}.{EnvironmentConstants.ScheduleJobRouteKey}") UC4Client constructor (Uc4Client.cs:25) No Retrieved into ScheduleJobEndpoint and never used — the value is assigned to a property no code reads. Tech-debt finding.
ApplicationHost appSettings in Web.config (value="entdev01") Read by the framework's environment-service host resolution*; no host source reads it directly No Selects the environment-service host used to answer the keys above*

No call to GetSecureConfigSetting exists anywhere in this host's source.

Key-name composition evidence: src/WCF/SAIF.Services.WCF.UC4.Host/EnvironmentConstants.cs — UC4CoreApiSettingGroup = "uc4coreapi", ServiceUrlKey = "url", ScheduleJobRouteKey = "schedulejobroute", interpolated in Uc4Client.cs:24-25.

Other host-level constants that behave as configuration: APP_NAME = "wcf_uc4" (UC4Service.cs:26), passed as ClientInfo.ApplicationId on every outbound call (Uc4Client.cs:31) and matching the pipeline AppName (pipelines/build-vars.UC4.yml).

Per-request resolution mechanism

Configuration is resolved per request, from the operation's own context:

// src/WCF/SAIF.Services.WCF.UC4.Host/UC4Service.cs line 31
public UC4Service() : this(new WcfEnvironmentService(OperationContext.Current.RequestContext))

WcfEnvironmentService is the WCF implementation of IEnvironmentService supplied by the SAIF framework packages* and resolves the environment tier from the current OperationContext.RequestContext. The environment tier that answers every GetConfigSetting call in this host is therefore a property of the caller's request URI, not of the build configuration or of the machine — the same deployed binary answers differently for callers arriving on different environment addresses.

Run-time connection resolution chain

There is no database connection in this host. No <connectionStrings> element exists in Web.config; no DbConnectionManager.GetOracleConnectionString(env, EnvironmentConfigKeys.OracleDatabase, "<pool code>") call exists in any host source file; no EnvironmentConfigKeys reference exists. This is a proven absence, not a missing finding — see Dependencies. No data-model.md page is generated for this host: the analysis proved (by exhaustive search) that it performs no database interaction of any kind. Where a connection is resolved elsewhere in this repository, it is resolved per request through the environment service exactly as the settings above are; no connection string, no credential, and no static connection table appears anywhere in this document set.

Web.config settings

Setting Value Source
<system.serviceModel><services> 1 entry, SAIF.Services.WCF.UC4.Host.Services.UC4Service, no <endpoint> children Web.config
basicHttpBinding (default, unnamed) maxBufferPoolSize 2147483647 Web.config
basicHttpBinding (default, unnamed) maxReceivedMessageSize 2147483647 Web.config
readerQuotas maxDepth 32 Web.config
readerQuotas maxStringContentLength 5242880 Web.config
readerQuotas maxArrayLength 2147483647 Web.config
readerQuotas maxBytesPerRead 4096 Web.config
readerQuotas maxNameTableCharCount 2147483647 Web.config
Transport/message security Not declared — no security element on the binding, no <serviceCredentials>, no <serviceAuthorization>; the default basicHttpBinding security mode is None* Web.config
serviceMetadata httpGetEnabled true Web.config
serviceDebug includeExceptionDetailInFaults true Web.config
serviceHostingEnvironment aspNetCompatibilityEnabled true Web.config
serviceHostingEnvironment multipleSiteBindingsEnabled true Web.config
system.web/compilation debug true Web.config
system.web/customErrors mode Off Web.config
system.webServer/httpErrors errorMode Detailed Web.config
appSettings/ApplicationHost entdev01 Web.config
Assembly binding redirect Newtonsoft.Json 0.0.0.0-13.0.0.0 → 13.0.0.0 Web.config

ServiceHostFactory default statement: because <services> declares no <endpoint>, no endpoint address, binding, or contract is written down anywhere in this host. The stock System.ServiceModel.Activation.ServiceHostFactory creates the endpoint by protocol-mapping default, which for the HTTP scheme is basicHttpBinding;* the unnamed <basicHttpBinding> element then supplies that binding's quotas. No custom binding, no WS-* binding, and no named bindingConfiguration exists in this host.

Logging configuration

Logging is performed through SAIF.Core.Services.LogService, constructed with the per-request IEnvironmentService (UC4Service.cs:38). UC4Service.Logging (UC4Service.cs:259-262) sets the trace threshold to INFO and writes one trace line per operation invocation, naming the method and the job name — see BR-UC4-008. No structured logging configuration file or logging level override was found in this host's own sources beyond this call site.

Per-variant environment variance

None are visible in this repository. This host ships a single Web.config with no Web.Base.config, Web.Debug.config, Web.Release.config, or Web.ReleaseExternal.config transform — an enumeration of Web.*.config in this project returns exactly one file. The internal/external configuration split that exists for SAIF.Services.WCF.Host (which does ship Web.Base.config and Web.ReleaseExternal.config) does not apply to this host and must not be generalized onto it. See Operational runbook for the two-artifact build the pipeline nonetheless performs.

environmentsettings/settings.yml, where present in this repository, is pipeline-seeded deployment data used to populate Environment API values per deployment track; no code path in this host reads it, and it is cited here only as evidence for environment variance — no secret, credential, host, or address value is reproduced from it.

Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.

Sources

  • src/WCF/SAIF.Services.WCF.UC4.Host/UC4Service.cs
  • src/WCF/SAIF.Services.WCF.UC4.Host/Uc4Client.cs
  • src/WCF/SAIF.Services.WCF.UC4.Host/EnvironmentConstants.cs
  • src/WCF/SAIF.Services.WCF.UC4.Host/Web.config
  • pipelines/build-vars.UC4.yml