我已经看到很多关于此的报告,但是所有答案似乎与我所遇到的问题相反。我有一个大约在2011年编写的自定义DLL;它驱动了一组自定义支付设备,并且已经运行了好多年(每天有数千笔交易)。最近,一个部门开始测试新的POS终端,并且dll现在在实验室中失败了。
该dll被设计为作为OPOS或POS.net运行(取决于客户端应用程序)。运行OPOS时,没有任何问题。无论设置如何都可以。运行POS.net时,出现以下异常:
Public Function Open(ByRef DevName As String, UseEvent As Integer) As Integer
DIM MyPOSExplorer As New PosExplorer()
System.TypeinitializationException:“ Microsoft.PointOfService.Management.Explorer”的类型初始值设定项引发了异常。
内部异常
PosLibraryException:无法打开注册表项
现在,这让我感到困惑。对于我在此问题上看到的大多数答案,他们建议将以下内容添加到配置中:
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
但是,如果设置为true,我会遇到上面的失败。如果设置为 false ,则一切正常(对于DLL本身)。
因此,答案可能是,为什么不将其设置为false并每天调用呢?父应用程序(现成的产品)要求将策略设置为True。 (在运行应用程序时,False将允许对设备进行声明并成功读取-但是,最终该应用程序会出现内部错误;设置为True时,该应用程序在遇到付款设备的初始化时就会在加载时崩溃)
DLL面向.Net 4.5;计算机系统正在运行4.51或更高版本。
我要确定的是要寻找的内容,以了解为什么我的设置似乎需要与大多数建议的修复相反的方法。也许那将引导我解决这个问题。 (如果我可以让POS.net使用“ True”,而不能使用“ False”,那我会很高兴的。此DLL已失效,并将在明年退役)
答案 0 :(得分:0)
该问题原来是一组运行Microsoft.PointOfService.DLL版本1.12.xx的计算机。当所有内容移至1.14.1.0版时,问题就消失了。现在,所有代码都可以按预期运行<NetFx40_LegacySecurityPolicy enabled="true"/>
。