Keyfax issues - Invalid Class String
Symptoms
Users report that they receive the message: '
Server object, ASP 0177 (0x800401F3)
Invalid class string '.
This may be displayed in a Keyfax error dialog as follows or in a Script error dialog if Script debugging is enabled on the Server and within the Browser:
This dialog will show the ResponseText from a Server remote scripting call. The top panel labeled XMLHTTP.responseText contains the source to an HTML error page. This, if scrolled down shows details of the actual source of the error. See the highlighted section below:
This error message can be saved as an HTML file by copying the whole text from the XMLHTTP.responseText box and pasting in Notepad, saving as a file with an html extension. See the following error message when viewed in a browser::
Cause
This behaviour will occur if a required DLL is not available to the ASP page for one of the following reasons.
- A required DLL is not installed and registered on the same server as Internet Information Services (IIS) which Active Server Pages (ASP) is running.
- A required DLL is not registered correctly on the same server as IIS which ASP is running.
- A required DLL does not have the correct permissions to be accessed by IIS which ASP is running (dllhost.exe process).
In Keyfax32 the likely DLL to be causing the problem is Keyfaxi32.dll, and in KFc32 the KFc32.dll. These files are normally located in the KFlauncher folder, on the IIS server.
Note:
It is however feasible that the KFDXML.dll could also be at fault although any errors may manifest themselves in a different form.
Resolution
The solution to this problem is normally to re-register the DLL in question and then reset the IIS service or 'Re-boot' the IIS Server.
To determine the DLL in question it may be necessary to look at the ASP source file which is indicated in the error message. In the case above, the error is on line 33 of the /keyfax/includes/inc_init_dll.asp file. Open this file with a text viewer to find more details:
This error occurs when an ASP page tries to create an instance of a DLL class (here, the "cHTML" class in the Keyfaxi32.dll).
First ensure the DLL is installed correctly on the IIS server (KFlauncher folder), then (re-) register the DLL (restarting the IIS service may be required if the DLL is already cached by dllhost.exe process - see below:).
The Keyfaxi32.dll (and KFc32.dll and KFDXML.dll) are 'ActiveX' DLLs, so will need registering at a command prompt with Regsvr32.exe (a Microsoft utility located in the System32 folder). See the following command line examples run from the C:\Windows\System32 folder:
- Regsvr32 C:\Inetpub\wwwroot\Kflauncher\Keyfaxi32.dll
- Regsvr32 C:\Inetpub\wwwroot\ Kflauncher\Kfc32.dll
- Regsvr32 C:\Inetpub\wwwroot\ Kflauncher\KFDXML.dll
To reset the IIS service on a Windows 2000/2003 server:
- Click Start, and then click Run.
- In the Open box, type iisreset, and then click OK.
- A command window will open, displaying the following messages appear:
- The command window will close automatically.
- Test that the service has reset by calling the Keyfax test container in a browser.
If this still doesn't resolve the issue, you may need to check the permissions for the DLL in question. Firstly, open the Registry by using the "Regedit" command run from the C:\Windows\System32 folder. This will display the following Regedit application:
On the navigation tree on the left, open the "HKEY_CLASSES_ROOT" node and find the "keyfaxi32.cHTML" class (or whatever class is being displayed in on the error line).
Right Click the node and select the "Permissions..." item on the context menu. The following property window will be displayed:
The dialog on the left shows the keyfaxi32.cHTML class with missing permissions (the right hand dialog shows another class with the correct permissions), the original permissions will need to be reapplied, so that IIS (the dllhost.exe process) will be able to create and use the class.
If the "Everyone" group is added, and the "Full Control" permission is applied, then this should resolve the problem - see below:
If all previous permissions are to be restored, use another Keyfax DLL as a guide, to exactly replicate the permissions to apply (all Keyfax DLLs have the same original permissions). Permissions from another DLL class can be ascertained by checking their permissions within the Registry as described above.
Status
It is unknown why DLLs become unregistered or their permissions are lost.
Note:
Omfax recommends that if this problem occurs frequently, that Microsoft are consulted to see if Knowledge Base articles are available to rectify the root of problem.