ASP.NET C#外部SDK并非线程安全的

问题描述 投票:2回答:1

我在ASP.NET/C#中有一个Web API。

它使用外部32位ActiveX SDK与第三方应用程序进行通信。

根据我的测试,当我们同时连接两个不同的用户时,该SDK存在问题。第二个连接将覆盖第一个。

如果我在两个cURL循环中调用我的API,一个循环与userA连接,另一个与userB连接,在某些情况下,对userA的调用将具有userB的结果。

我的代码中没有任何静态变量,肯定没有引用SDK的静态变量。

我能想到的唯一解决方案是在获得用户响应时“锁定” API。还有其他解决方案吗?如果不是,那么有关如何在C#中执行此操作的任何指针?

API具有多个控制器(例如客户/发票/付款/供应商),所有这些控制器都使用相同的SDK。因此,对CustomerController方法的调用也必须锁定对其他控制器的调用。

仅在使用SDK时才需要激活锁定(这可能是请求时间的99%)。

c# asp.net iis activex
1个回答
0
投票

您需要共享有关ActiveX SDK的更多信息(实际上没有这样的东西)。 ActiveX有三种类型

great explanation here

ActiveX EXE:与独立的EXE文件不同,ActiveX EXE文件旨在用作OLE服务器,它不过是一个旨在与其他程序共享信息的程序。它的扩展名为.EXE。

ActiveX DLL:ActiveX DLL文件本身并不意味着要使用。而是,这些类型的文件包含设计为在创建独立程序时用作构建块的子程序。它具有.DLL文件扩展名。

ActiveX控件:与ActiveX DLL或ActiveX EXE文件不同,ActiveX控件文件通常提供子程序和用户界面,您可以在其他程序中重用它们。文件扩展名为.OCX。

根据SDK的格式及其使用方式,可能存在使调用并行的解决方案。

用一些代码,示例等更新问题,可能使我有更多的了解。

© www.soinside.com 2019 - 2024. All rights reserved.