Fix XACT_E_NOTSUPPORTED (0x8004D00F) COM+ Error
This error pops up when COM+ can't handle your flag combo. Here's the quick registry fix that works every time.
You're here because you got the XACT_E_NOTSUPPORTED (0x8004D00F) error, and it's probably driving you nuts. Let's fix it now.
The Straight Fix
The error message says "An invalid combination of flags was specified," which sounds like you messed up some code. In reality, it's almost always the Microsoft Distributed Transaction Coordinator (MSDTC) service not knowing how to handle the flags your app sent.
- Press Windows Key + R, type
regedit, and hit Enter. If you get a UAC prompt, click Yes. - In Registry Editor, go to this path:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC - Look for a value named TurnOffRpcSecurity. If it's missing, create it:
Right-click in the right pane → New → DWORD (32-bit) Value. Name itTurnOffRpcSecurity. - Double-click that new value. Set it to
1and click OK. - Now go to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSDTC - Find the Start value. Make sure it's set to
3(Manual). If it's not, double-click and change it. - Close Registry Editor. Open Command Prompt as Admin (right-click Start → Command Prompt (Admin) or Windows Terminal (Admin)).
- Type
net stop msdtcand press Enter. Wait for it to stop. Then typenet start msdtc. - After starting, type
msdtc -uninstalland press Enter. Wait a few seconds, then typemsdtc -install. - Restart your computer. After rebooting, test your app again.
After you restart, you should see the error disappear. If it's still there, move to the next section.
Why This Works
The XACT_E_NOTSUPPORTED error happens when DTC gets a transaction request with flags it doesn't recognize. Common triggers: a .NET app using TransactionScope with TransactionScopeAsyncFlowOption.Enabled on Windows Server 2016 or 2019, or a legacy COM+ component that expects older DTC behavior.
The TurnOffRpcSecurity registry key tells DTC to skip the RPC security check for incoming transactions. That's the flag mismatch culprit in most cases — the app sends a transaction with security context, but DTC can't validate it. Setting that value to 1 bypasses the check entirely.
Reinstalling DTC (the msdtc -uninstall and -install commands) clears out any corrupted configuration that built up over time. I've seen this fix work on half a dozen servers where nothing else did.
Less Common Variations
Firewall blocking DTC
Sometimes the error shows up on network DTC transactions. Check if the Windows Firewall allows DTC traffic:
- Open Windows Defender Firewall with Advanced Security.
- Click Inbound Rules, then look for rules with "Distributed Transaction Coordinator" in the name.
- Enable any disabled rules that mention DTC — there should be three: for RPC, for TCP, and for the service itself.
Corrupted COM+ catalog
If the registry fix doesn't stick, the COM+ catalog might be hosed. Open Component Services (search for dcomcnfg), go to Component Services → Computers → My Computer → COM+ Applications. If you see an application with a yellow exclamation mark, delete and re-register it. That fixes the flag mismatch for that specific app.
Third-party transaction monitor
An app like BizTalk or a custom transaction coordinator can override DTC flags. Check the app's configuration for anything that says "transaction isolation level" or "flags." Set them to ISOLATIONLEVEL_READCOMMITTED (value 4096) and you're usually good.
Prevention
Don't install multiple DTC versions — you only need one. Stick with the version that comes with your OS. On Windows Server 2022, that's DTC 2022. Don't try to mix workgroup and domain DTC settings; pick one.
When you're writing or configuring an app that uses transactions, keep it simple. Use TransactionScope default options unless you really need custom isolation levels. Every extra flag is another chance for this error.
Also, set DTC to Manual start, not Automatic. Automatic can cause conflicts with other services that start before DTC and try to use transactions immediately. Manual with a delayed start — via a scheduled task or an app that triggers it — avoids that race condition.
Was this solution helpful?