在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()方法挂起。它冻结在那里,永不终止。我发现,如果我更改了以下文件的权限(完全访问所有人),则扫描程序将开始工作。
- 符号控制对象的OCX C:\窗口\ system32 \ scanner.ocx
- 服务对象-DLL C:\窗口\ system32 \ stiopos.dll
第2期)
现金抽屉现在呈现类似的行为:冻结Claim()方法。我更改了我可以找到的所有文件(甚至加载sysinternal的Process Explorer)的权限,以查找哪些文件正在使用。这并没有解决问题。
注:
- IIS现在正在运行的系统在我的测试 - 它没有什么区别。
- 硬件在爱普生OPOS和Microsoft POS for .NET测试工具中工作正常。因此,只有在Web应用程序的上下文中运行问题。
- 应用程序使用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
答
解决方案:切换应用程序池到经典模式(而不是集成)。它现在就像一种魅力!