问题
I have application A and application B, both on the same server. Application A is calling WCF service, located in application B using netmsmqbinding and a private queue. B's service method, which is called, is using entity framework to make a call to the database. However, this exception is thrown in B:
System.Data.Entity.Core.EntityException: The underlying provider failed on Open.
---> System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed.
---> System.Runtime.InteropServices.COMException: The MSDTC transaction manager was unable to push the transaction to the destination transaction manager due to communication problems.
Possible causes are: a firewall is present and it doesn't have an exception for the MSDTC process, the two machines cannot find each other by their NetBIOS names, or the support for network transactions is not enabled for one of the two transaction managers.
This are the DTC settings - http://postimg.org/image/rzqxf17t3/
The server system administrator has ensured me it isn't a firewall issue. Therefore, I think it is this part of the exception message that I should check "the two machines cannot find each other by their NetBIOS names".
To summaries, my questions are:
How to check if the sys admin has told me the truth and check if the ports are open between the application and database server?
How to check if the problem is not related with the NetBIOS names?
If the computers are not visible with their NetBIOS names what should I do?
If I have missed to give some valuable information, then write me and I will add it.
Thank you in advance!
回答1:
It was a firewall issue. I have fixed using this article http://support.microsoft.com/kb/250367
来源:https://stackoverflow.com/questions/23442210/distributed-transaction-coordinator-the-underlying-provider-failed-on-open