Base solution for your next web application
Open Closed

SOLVED-V4.X After deployment MSDTC Error on hosted site #3809


User avatar
0
exlnt created

I just deployed my V4.X application to my hosting provider for the first time after I completed the upgrade to V4.X. When I attempt to create a new tenant, I get the below error related to MSDTC.

System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> System.Transactions.TransactionManagerCommunicationException: Network access for Distributed Transaction Manager (MSDTC) has been disabled. Please enable DTC for network access in the security configuration for MSDTC using the Component Services Administrative tool. ---> System.Runtime.InteropServices.COMException: The transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D024)
   at System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel& isolationLevel, ITransactionShim& transactionShim)
   at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)
   --- End of inner exception stack trace ---
   at System.Transactions.Oletx.OletxTransactionManager.ProxyException(COMException comException)
   at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)
   at System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx)
   at System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx)
   at System.Transactions.EnlistableStates.Promote(InternalTransaction tx)
   at System.Transactions.Transaction.Promote()
   at System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction)
   at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts)
   at System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie(Transaction transaction, Byte[] whereAbouts)
   at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
   at System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx)
   at System.Data.SqlClient.SqlInte...

This is the exact same error I reported early this year: [https://forum.aspnetboilerplate.com/viewtopic.php?f=5&t=4906]) I tried to apply the same code fix (below) to my V4.X solution but it will not compile.

//20170130 - Added for disabling MSDTC transactions 
 Configuration.ReplaceService<IEfTransactionStrategy, DbContextEfTransactionStrategy>(DependencyLifeStyle.Transient);

In V4.X, Is there another way to disable MSDTC?


2 Answer(s)
  • User Avatar
    0
    exlnt created

    Well this issue is now solved! Not sure what happened, but I restarted Visual Studio 2017 and tried the same line of code and was able to compile without any errors! I deployed my updated app to the hosting site and was able to create the new tenanat without MSDTC error.

  • User Avatar
    0
    ismcagdas created
    Support Team

    Hi @exlnt,

    There might be a problem on publishing project with below line added to it.

    Configuration.ReplaceService<IEfTransactionStrategy, DbContextEfTransactionStrategy>(DependencyLifeStyle.Transient);
    

    I'm glad that you have fixed it :).