在FAXCOMEX LIb的C#实现中System.Runtime.InteropServices.COMException错误

这是问题。

我在C#(Visual Studio 2012)中编写了一个Windows服务,它查询MS SQL数据库,然后使用FAXCOMEXLIB发送传真。

我能够引用FAXCOMEXLIB并使用服务器类和传真文档类。 传真已创build并发送。

但是,当我尝试使用FAXCOMEXLIB库中的任何其他类时,我运行该服务(它编译没有任何错误)时出现以下错误:

System.Runtime.InteropServices.COMException (0x80040111): Retrieving the COM class factory for component with CLSID {43C28403-E04F-474D-990C-B94669148F59} failed due to the following error: 80040111 ClassFactory cannot supply requested class (Exception from HRESULT: 0x80040111 (CLASS_E_CLASSNOTAVAILABLE)). at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 

这是由触发

 FAXCOMEXLib.FaxOutgoingArchive faxOutgoing = new FAXCOMEXLib.FaxOutgoingArchive(); 

我试图跑

  regsvr32.exe fxscomex.dll 

它没有帮助。

我也尝试手动创build并导入以下registry项。

 [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}] @="FaxOutgoingArchive Class" [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}\InprocServer32] @=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,74,00,25,\ 00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,66,00,78,00,\ 73,00,63,00,6f,00,6d,00,65,00,78,00,2e,00,64,00,6c,00,6c,00,00,00 "ThreadingModel"="Apartment" [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}\ProgID] @="FaxComEx.FaxOutgoingArchive.1" [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990CB94669148F59}\Programmable] [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}\TypeLib] @="{2BF34C1A-8CAC-419F-8547-32FDF6505DB8}" [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}\Version] @="1.0" [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{43C28403-E04F-474D-990C-B94669148F59}\VersionIndependentProgID] @="FaxComEx.FaxOutgoingArchive" 

registry项没有帮助。 我曾尝试在Windows 7 64位,Windows Server 2012 64位和Windows Server 2008 32位上运行该服务,具有相同的结果。

任何意见将不胜感激。

这是您的代码中的一个错误,您不应该自己创建一个FaxOutgoingArchive的实例。 这在MSDN文档中是明确的:

要在Microsoft Visual Basic中创建FaxOutgoingArchive对象,请检索FaxFolders对象的OutgoingArchive属性。

如果这是混淆,相同的规则适用于C#