Periodically getting this error on when using a BizTalk WCF-Custom SendPort to call an Oracle Stored Proc.
Error Description: System.Transactions.TransactionException: The operation is not valid for the state of the transaction. ---> System.TimeoutException: Transaction Timeout --- End of inner exception stack trace --- at System.Transactions.TransactionState.EnlistVolatile(InternalTransaction tx, IEnlistmentNotification enlistmentNotification, EnlistmentOptions enlistmentOptions, Transaction atomicTransaction) at System.Transactions.Transaction.EnlistVolatile(IEnlistmentNotification enlistmentNotification, EnlistmentOptions enlistmentOptions) at Microsoft.BizTalk.Adapter.Wcf.Runtime.TxnBatch2..ctor(IBTTransportProxy transportProxy, ControlledTermination control, Transaction transaction, ManualResetEvent orderedEvent, Boolean makeSuccessCall) at Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkDeleteTxn.Execute(BizTalkExecutionContext executionContext)
I found two possible solutions scattered in different places (and by experimenting)
Solution 1 - turn off transactions on the BizTalk SendPort (Just uncheck the "Use Transactions" checkbox on the "Messages" tab of the SendPort.
Solution 2 - This is a transaction timeout, not a database timeout. This can be configured in the machine.config file.
<system.transactions>
<defaultSettings timeout="00:15:00" />
</system.transactions>
Not yet sure exactly where in the machine.config this would go. Reference: Default Transaction Timeout