title: I get NpgsqlException(0x80004005) when I use MS DTC
body: <p>I get NpgsqlException(0x80004005) when I use MS DTC.</p>
  
  <p>Npgsql.NpgsqlException (0x80004005): No password has been provided but the backend requires one (in MD5)</p>
  
  <p>Here is an example of the code.</p>
  
  <pre><code>string strcon1 = "Server=localhost;Port=5432;User Id=postgres; Password=xxxxx; Database=db1;enlist=true;";
  string strcon2 = "Server=localhost;Port=5432;User Id=postgres; Password=xxxxx; Database=db2;enlist=true;";
  
  using (TransactionScope tx = new TransactionScope())
  {
      using (NpgsqlConnection conn1 = new NpgsqlConnection(strcon1))
      {
          string sql = "insert into test1(col1) values('A')";
          conn1.Open();
          using (NpgsqlCommand command = new NpgsqlCommand(sql, conn1))
          {
              command.ExecuteNonQuery();
          }
          using (NpgsqlConnection conn2 = new NpgsqlConnection(strcon2))
          {
              conn2.Open();
              using (NpgsqlCommand command = new NpgsqlCommand(sql, conn2))
              {
                  command.ExecuteNonQuery();
              }
          }
      }
      tx.Complete();
  } //  Error: tx.Dispose()
  
  Server stack trace: 
  Npgsql.NpgsqlConnector.ProcessAuthenticationMessage(String username, AuthenticationRequestMessage msg)
  Npgsql.NpgsqlConnector.HandleAuthentication(String username, NpgsqlTimeout timeout)
  Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout)
  Npgsql.ConnectorPool.Allocate(NpgsqlConnection conn, NpgsqlTimeout timeout)
  Npgsql.NpgsqlConnection.OpenInternal()
  Npgsql.NpgsqlTransactionCallbacks.GetConnection()
  Npgsql.NpgsqlTransactionCallbacks.PrepareTransaction()
  System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]&amp;amp;amp; outArgs)
  System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
  
  Exception rethrown at [0]: 
  System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
  System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&amp;amp;amp; msgData, Int32 type)
  Npgsql.INpgsqlTransactionCallbacks.PrepareTransaction()
  Npgsql.NpgsqlResourceManager.DurableResourceManager.Prepare(PreparingEnlistment preparingEnlistment)
  System.Transactions.Oletx.OletxEnlistment.PrepareRequest(Boolean singlePhase, Byte[] prepareInfo)
  System.Transactions.Oletx.OletxTransactionManager.ShimNotificationCallback(Object state, Boolean timeout)
  System.Threading._ThreadPoolWaitOrTimerCallback.PerformWaitOrTimerCallback(Object state, Boolean timedOut)&lt;/StackTrace&gt;&lt;ExceptionString&gt;Npgsql.NpgsqlException (0x80004005): No password has been provided but the backend requires one (in MD5)
  
  Server stack trace: 
  Npgsql.NpgsqlConnector.ProcessAuthenticationMessage(String username, AuthenticationRequestMessage msg)
  Npgsql.NpgsqlConnector.HandleAuthentication(String username, NpgsqlTimeout timeout)
  Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout)
  Npgsql.ConnectorPool.Allocate(NpgsqlConnection conn, NpgsqlTimeout timeout)
  Npgsql.NpgsqlConnection.OpenInternal()
  Npgsql.NpgsqlTransactionCallbacks.GetConnection()
  Npgsql.NpgsqlTransactionCallbacks.PrepareTransaction()
  System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]&amp;amp;amp; outArgs)
  System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
  
  Exception rethrown at [0]: 
  System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
  System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&amp;amp;amp; msgData, Int32 type)
  Npgsql.INpgsqlTransactionCallbacks.PrepareTransaction()
  Npgsql.NpgsqlResourceManager.DurableResourceManager.Prepare(PreparingEnlistment preparingEnlistment)
  System.Transactions.Oletx.OletxEnlistment.PrepareRequest(Boolean singlePhase, Byte[] prepareInfo)
  System.Transactions.Oletx.OletxTransactionManager.ShimNotificationCallback(Object state, Boolean timeout)
  System.Threading._ThreadPoolWaitOrTimerCallback.PerformWaitOrTimerCallback(Object state, Boolean timedOut)
  </code></pre>
  
  <p>Windows Server 2012 R2 standard, 
  PostgreSQL 9.6,
  Npgsql 3.1.8</p>
  
  <p>How can I solve it?</p>