| Previous | Next |
| SL_E_INVALID_USE_OF_ADD_ON_PKEY | CO_E_THREADINGMODEL_CHANGED |
CONTEXT_E_NOTRANSACTION
CONTEXT_E_NOTRANSACTION is the failure HRESULT 0x8004E027 (signed decimal -2147164121, unsigned decimal 2147803175). Its severity bit is 1, facility is 4 (FACILITY_ITF), and the facility-specific code field is 0xE027.
The object context exists, yet it is not participating in a transaction
This HRESULT is returned when an operation requires the current COM+ context to have a transaction and no transaction is present. The component can be correctly activated in COM+ while its transaction attribute still produces a nontransactional context.
AllStat describes the result as “The requested operation requires that the current context have a Transaction, and it does not.” for it, this wording identifies the immediate COM+ condition, while surrounding context and earlier events determine why it was reached.
Contract boundary
The distinction is between context availability and transaction participation. Code should inspect the effective transaction attribute and caller propagation rather than assuming all serviced components are transactional.
Causes that fit this specific result
- The component transaction attribute is Disabled, Not Supported, or Supported and no caller transaction exists.
- A call crossed into a context configured to suppress the caller’s transaction.
- Deployment changed Required or Requires New to a nontransactional setting.
- Code invokes transaction-only context operations from a method intentionally designed without a transaction.
Evidence to preserve before changing the system
- Record context ID, transaction ID or its absence, component transaction attribute, and caller transaction state.
- Capture the activation chain to see where transaction propagation stopped.
- Compare production Component Services settings with the package manifest.
- Log the exact transaction-only API or service that rejected the context.
Diagnostic sequence
- Decide whether the business operation truly requires atomic transaction protection.
- Configure Required or Requires New when the component owns transactional resource work.
- If the operation is intentionally nontransactional, remove the transaction-only context call.
- Retest caller propagation and nested component attributes as a complete transaction map.
Retry and recovery
Activate the component in a transactional context or redesign the operation. Retrying inside the same nontransactional context cannot satisfy the requirement.
What the result does not establish
The HRESULT does not mean MSDTC is unavailable; CONTEXT_E_TMNOTAVAILABLE covers that boundary. It also does not prove a transaction existed and was lost.
Difference from nearby HRESULT values
CONTEXT_E_NOCONTEXT means no COM+ object context exists at all. XACT_E_NOTRANSACTION is a transaction-interface result not tied to this COM+ context requirement.
Practical scenario
A package import changes an accounting component from Required to Supported. Calls from a nontransactional web layer now have a COM+ context but no transaction, and a transaction-only operation returns this code; restoring Required reestablishes the intended boundary.
Developer and telemetry guidance
Include effective transaction attributes and transaction IDs in request traces. Configuration drift detection should flag changes that silently convert Required components into nontransactional ones.
Official Microsoft references
- Microsoft: COM transaction and context error codes
- Microsoft: configuring COM+ transactions
- Microsoft: managing automatic COM+ transactions
- Microsoft: COM+ contexts
- Microsoft: HRESULT values in MS-ERREF
Looking for a different code? Search another status or error code.
