这就是问题所在。
我用C#(Visual Studio 2012)编写了一个Windows服务,它查询MS SQL数据库,然后使用FAXCOMEXLIB发送传真。
我能够引用FAXCOMEXLIB并使用服务器类和传真文档类。创建并发送传真。
但是,当我尝试使用 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
它没有帮助。
我还尝试手动创建和导入以下注册表项。
[HKEY_CLASSES_ROOTWow6432NodeCLSID{43C28403-E04F-474D-990C-B94669148F59}]
@="FaxOutgoingArchive Class"
[HKEY_CLASSES_ROOTWow6432NodeCLSID{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_ROOTWow6432NodeCLSID{43C28403-E04F-474D-990C-B94669148F59}ProgID]
@="FaxComEx.FaxOutgoingArchive.1"
[HKEY_CLASSES_ROOTWow6432NodeCLSID{43C28403-E04F-474D-990CB94669148F59}Programmable]
[HKEY_CLASSES_ROOTWow6432NodeCLSID{43C28403-E04F-474D-990C-B94669148F59}TypeLib]
@="{2BF34C1A-8CAC-419F-8547-32FDF6505DB8}"
[HKEY_CLASSES_ROOTWow6432NodeCLSID{43C28403-E04F-474D-990C-B94669148F59}Version]
@="1.0"
[HKEY_CLASSES_ROOTWow6432NodeCLSID{43C28403-E04F-474D-990C-B94669148F59}VersionIndependentProgID]
@="FaxComEx.FaxOutgoingArchive"
注册表项没有帮助。我尝试在Windows 7 64位,Windows Server 2012 64Bit和Windows Server 2008 32位上运行该服务,结果完全相同。
任何建议将不胜感激。
这是代码中的一个错误,你不应该自己创建一个FaxOutgoingArchive的实例。 MSDN 文档中有明确说明:
若要在 Visual Basic 中创建 FaxOutgoingArchive 对象Microsoft请检索 FaxFolder 对象的 OutoutArchive 属性。
如果这令人困惑,相同的规则适用于 C#