为什么我的 ASP.NET MVC 需要 DTC 来完成事务,而我的 WPF 应用程序使用相同的 .DLL 却不需要?

Why does my ASP.NET MVC require DTC to complete the transaction while my WPF app using the same .DLL doesn't?

我在一个单独的 .DLL 中有这个事务,它被 WPF 应用程序和 ASP.NET MVC 调用。它在同一台服务器上的两个独立数据库中调用两个独立的存储过程。

WPF 应用程序不需要 DTC 来执行此操作,而 ASP.NET MVC 应用程序需要。 ASP.NET MVC 给我这个错误:事务管理器已禁用对 remote/network 事务的支持。

为什么 WPF 应用程序不需要 DTC 而 ASP.NET MVC 应用程序需要 DTC,有没有办法避免它?

我现在只是通过在我的主数据库上创建一个存储过程来绕过这个问题,该存储过程将调用(即直接调用)转发到我的辅助数据库中的存储过程。这是一个可以接受的设计选择,因为我的辅助数据库中的 SP 本来应该在我的主数据库中,但它存在是因为遗留问题并且该解决方案完全阻止了 MSDTC 升级,因此它比仅启用整个电路要好得多这个调用(在我们的整个系统中)。