HOWTO: Fixing the "500 Extended Server Error" Problem on ISAPI

Last reviewed: May 20, 1997
Article ID: Q163166
The information in this article applies to:
  • Microsoft Internet Information Server, versions 1.0, 2.0, 3.0

SUMMARY

This article explains how to fix the following Microsoft Internet Information Server (IIS) error:

   500 Server Error. Specified Module could not be found

MORE INFORMATION

When a Web browser (such as Internet Explorer 3.0) invokes an ISAPI DLL on the IIS, the server may display the above error message. The reason for this error is that one or more DLLs on which the ISAPI DLL directly or transitively depends is either not installed on the IIS server or the DLLs are located in a directory that IIS does not search. If this is the case, IIS sends back to the browser an HTTP status code 500, which the browser then displays as the above error message instead of the expected output from the ISAPI DLL.

To fix this situation, copy all the DLLs on which your ISAPI DLL directly or transitively depends to the System32 directory of the IIS server.

A very common cause for this problem is building an ISAPI DLL using the ISAPI Wizard in Visual C++, using the share libraries option, and then not having the Visual C++ and MFC runtime DLLs installed on the IIS server. The Visual C++ and MFC runtime DLLs typically needed are the following.

   For Visual C++ 4.2 Debug:
      - Msvcrtd.dll
      - Mfc42d.dll

   For Visual C++ 4.2 Release:
      - Msvcrt.dll
      - Mfc42.dll

   For Visual C++ 4.1 Debug:
      - Msvcrtd.dll
      - Mfc41d.dll

   For Visual C++ 4.1 Release:
      - Msvcrt.dll
      - Mfc41.dll

To generically determine which DLLs you need to install on your IIS server, use either the DUMPBIN utility that ships with Visual C++ (use the /imports option), or the Quick View facility of Windows Explorer (if it is installed) to view what DLLs your ISAPI DLL depends on. Either program provides you with a list of dependent DLLs. Remember you may need to repeat this process for any DLLs listed to determine transitive DLL dependencies.

REFERENCES

For additional information, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q135338
   TITLE     : How To View Exported Functions in a DLL.

(c) Microsoft Corporation 1997, All Rights Reserved. Contributions by Leon Braginski, Microsoft Corporation


Additional query words:
Keywords : IISAPI
Technology : kbInetDev
Version : 1.0 2.0 3.0
Platform : NT WINDOWS
Issue type : kbhowto


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: May 20, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.