| Previous | Next |
| CO_E_NOTPOOLED | CO_E_NOSYNCHRONIZATION |
CO_E_NOTCONSTRUCTED
CO_E_NOTCONSTRUCTED is the failure HRESULT 0x8004E02D (signed decimal -2147164115, unsigned decimal 2147803181). Its severity bit is 1, facility is 4 (FACILITY_ITF), and the facility-specific code field is 0xE02D.
The class expects a COM+ constructor string that was not supplied through activation
This HRESULT means the component must use COM+ object construction to operate correctly, but object construction is not enabled in the effective component configuration. The runtime therefore cannot provide the administratively defined constructor string.
AllStat describes the result as “The COM+ component you created must use object construction to work correctly.” For CO_E_NOTCONSTRUCTED, this wording identifies the immediate COM+ condition, while surrounding context and earlier events determine why it was reached.
Contract boundary for CO_E_NOTCONSTRUCTED
COM+ object construction is a specific service that calls IObjectConstruct::Construct with configured data. It is not the C++ constructor, managed constructor, or ordinary COM class factory.
Causes that fit this specific result
- Object construction is disabled after package import or manual installation.
- The class is directly activated outside the COM+ application that carries its constructor string.
- The component requires a DSN or endpoint from construction configuration but the property was removed.
- A deployment creates a duplicate COM+ application without copying the construction attribute.
Evidence to preserve before changing the system
- Record application ID, CLSID, construction-enabled flag, and a redacted fingerprint of the constructor string.
- Capture whether
IObjectConstruct::Constructwas invoked. - Compare the COM+ catalog entry with the deployment package.
- Verify the actual activation path and application identity.
Diagnostic sequence
- Enable object construction for the component and configure the required nonsecret initialization data.
- Do not store passwords or other sensitive values in the constructor string.
- Validate and report constructor input errors at the component boundary.
- Test activation after package export/import to ensure the construction setting survives deployment.
Retry and recovery
Restore the object-construction configuration or redesign the class to receive explicit configuration. Retrying an unchanged activation cannot invoke a disabled service.
What CO_E_NOTCONSTRUCTED does not establish
The result does not mean the language-level object constructor threw. It specifically identifies the COM+ construction service requirement.
Difference from nearby HRESULT values
CO_E_INITIALIZATIONFAILED is broader failure inside initialization. CO_E_NOTPOOLED concerns the separate object-pooling service that is often combined with construction.
Practical scenario
A generic data component expects a DSN through its COM+ constructor string. A new server installs the DLL but not the construction property, so activation returns this code; importing the complete COM+ package restores the initialization contract.
Developer and telemetry guidance
Treat constructor strings as versioned, nonsecret configuration and validate them during deployment. Logs should state whether the COM+ construction callback ran, not print the entire string.
Official Microsoft references
- Microsoft: COM transaction and context error codes
- Microsoft: COM+ object constructor strings
- Microsoft: configuring COM+ applications
- Microsoft: COM+ Components collection
- Microsoft: HRESULT values in MS-ERREF
Looking for a different code? Search another status or error code.