Asp.NET 核心网络 API 带有 COM 对象

Asp.NET CORE WEB API with a COM OBJECT

我在处理对 webApi 的多次调用时遇到问题。

我的 webApi 的控制器正在使用一个需要连接到数据库的 com 对象,并且一次只允许一个连接。

假设我有 2 个控制器:

-客户

-发票

如果同时调用“Clients”和“Invoices”,第一个操作将失败。

是否可以让多个Controller等待任务结束? 或者还有其他解决方案吗?

创建一个简单的存储库模式来解决您的问题。存储库是一种特殊的 Facade,它隐藏了您的数据库访问和 return 域模型

的实现细节

示例:

public class DataObjectRepository: IDataObjectRepository {
      private static readonly object x = new object();
 
      public DataObject GetObject() {
          lock (x)
         {
                  // Your code accessing the COM object
          }
      }
}

然后将其作为单例注入

services.AddSingleton<IDataObjectRepository, DataObjectRepository>();

DataObject 替换为任何域模型名称。