我有一个使用 NServiceBus 的消息处理程序,它需要在两个不同的数据库上执行 SQL 代码。连接字符串具有不同的初始目录,但在其他方面相同。
当消息被拾取时,第一个 sql 连接成功打开,但第二个 sql 连接导致调用 .Open 时抛出以下异常。
分布式事务管理器 (MSDTC) 的网络访问已被禁用。请使用组件服务管理工具在 MSDTC 的安全配置中启用 DTC 以进行网络访问。
我们不使用 MSDTC。
这是失败的代码。它会在 connB.Open() 上失败
public void Handle(MyMsgCmd message)
{
using (SqlConnection connA = new SqlConnection(myConnectionStringA))
{
connA.Open();
}
using (SqlConnection connB = new SqlConnection(myConnectionStringB))
{
connB.Open();
}
}
当从命令行应用程序或 Web 应用程序运行时,同样的代码可以正常工作。仅当从 NServiceBus 调用时才会引发异常。
当第一次打开或自行打开时,这些连接中的每一个都将成功打开,但只要存在第二个连接,即使已知良好,第二个连接也将始终无法打开并出现相同的异常。
使用 NServiceBus 依次打开多个连接是否需要额外配置?