在OPOS/POS for .NET上打开()/ Claim()时挂起

问题描述:

我正在运行Microsoft POS for .NET。我有一台钱箱,条码扫描器和收据打印机连接到电脑。使用Microsoft POS for .NET测试应用程序,它们都可以正常工作。在OPOS/POS for .NET上打开()/ Claim()时挂起

我们的应用程序是IIS中的ASP.NET Web应用程序。因此,我们从Web应用程序的服务器端实例化OPOS设备,并且一切正常。从Windows XP/IIS 5.1开始我们一直在做这个。

我们现在将我们的部署计算机升级到Windows 7.我们的开发计算机运行这个场景没有问题。不过,我目前的工作部署计算机上,我有两个问题:

第1期)

条形码扫描器上的Open()方法挂起。它冻结在那里,永不终止。我发现,如果我更改了以下文件的权限(完全访问所有人),则扫描程序将开始工作。

  1. 符号控制对象的OCX C:\窗口\ system32 \ scanner.ocx
  2. 服务对象-DLL C:\窗口\ system32 \ stiopos.dll

第2期)

现金抽屉现在呈现类似的行为:冻结Claim()方法。我更改了我可以找到的所有文件(甚至加载sysinternal的Process Explorer)的权限,以查找哪些文件正在使用。这并没有解决问题。

注:

  1. IIS现在正在运行的系统在我的测试 - 它没有什么区别。
  2. 硬件在爱普生OPOS和Microsoft POS for .NET测试工具中工作正常。因此,只有在Web应用程序的上下文中运行问题。
  3. 应用程序使用C:\ Program Files文件\ OPOS \ CommonCO \ OPOSCashDrawer.ocx和C:\ Program Files文件\ OPOS \ Epson2 \ SoDrw14.dll

你见过这种行为?你有什么建议如何解决它?

堆栈跟踪时挂起:

Microsoft.PointOfService.dll!Microsoft.PointOfService.Legacy.LegacyProxy.InvokeMethod(string methodName = "ClaimDevice", ref object[] parameters, bool[] byRef) + 0x94 bytes  
Microsoft.PointOfService.dll!Microsoft.PointOfService.Legacy.LegacyProxy.InvokeMethodAndCheckImpl(string methodName = "ClaimDevice", ref object[] parameters, bool[] byRef) + 0x50 bytes  
Microsoft.PointOfService.dll!Microsoft.PointOfService.Legacy.LegacyProxy.Claim(int timeout) + 0x54 bytes  
Microsoft.PointOfService.dll!Microsoft.PointOfService.Legacy.LegacyCashDrawer.Claim(int timeout) + 0xd bytes  

解决方案:切换应用程序池到经典模式(而不是集成)。它现在就像一种魅力!