我在ASP.NET/C#中有一个Web API。
它使用外部32位ActiveX SDK与第三方应用程序进行通信。
根据我的测试,当我们同时连接两个不同的用户时,该SDK存在问题。第二个连接将覆盖第一个。
如果我在两个cURL循环中调用我的API,一个循环与userA连接,另一个与userB连接,在某些情况下,对userA的调用将具有userB的结果。
我的代码中没有任何静态变量,肯定没有引用SDK的静态变量。
我能想到的唯一解决方案是在获得用户响应时“锁定” API。还有其他解决方案吗?如果不是,那么有关如何在C#中执行此操作的任何指针?
API具有多个控制器(例如客户/发票/付款/供应商),所有这些控制器都使用相同的SDK。因此,对CustomerController方法的调用也必须锁定对其他控制器的调用。
仅在使用SDK时才需要激活锁定(这可能是请求时间的99%)。
您需要共享有关ActiveX SDK的更多信息(实际上没有这样的东西)。 ActiveX有三种类型
ActiveX EXE:与独立的EXE文件不同,ActiveX EXE文件旨在用作OLE服务器,它不过是一个旨在与其他程序共享信息的程序。它的扩展名为.EXE。
ActiveX DLL:ActiveX DLL文件本身并不意味着要使用。而是,这些类型的文件包含设计为在创建独立程序时用作构建块的子程序。它具有.DLL文件扩展名。
ActiveX控件:与ActiveX DLL或ActiveX EXE文件不同,ActiveX控件文件通常提供子程序和用户界面,您可以在其他程序中重用它们。文件扩展名为.OCX。
根据SDK的格式及其使用方式,可能存在使调用并行的解决方案。
用一些代码,示例等更新问题,可能使我有更多的了解。