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.
Related documentation¶
- Index
- Overview
- Architecture
- Activation and hosting
- Operations
- Faults and error pipeline
- Authentication and authorization
- Dependencies
- Operations and processes
- Business rules
- Operational runbook
- Tech debt
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.cssrc/WCF/SAIF.Services.WCF.UC4.Host/Uc4Client.cssrc/WCF/SAIF.Services.WCF.UC4.Host/EnvironmentConstants.cssrc/WCF/SAIF.Services.WCF.UC4.Host/Web.configpipelines/build-vars.UC4.yml