IIS 10 32bit ISAPI DLL giving 404.0 error on dll file after enabling it

966 Views Asked by At

I've been working with isapi.dll files on IIS for years, up to IIS 7.0.

I am now trying to migrate my Server 2008R2 to Server 2019. I have done everything I know, but nothing seems to work.

Here is what I've done:

  1. Made sure the server Roles & Features for the Web Server includes CGI, ISAPI Extensions, and ISAPI Filters. I've even removed and re-added all these features to make sure there wasn't a problem when first installing them.
  2. On IIS Manager, on the default site, I added a new application (scripts) and made sure the dll file with all supporting files are in this folder (exactly the files that work on IIS 7.0). 2.1. If you open the dll file in a browser, it tries to download the file, which means my IIS server works, the application folder alias works, and IIS found the dll file.
  3. On the application folder's Handler Mapping, I enabled CGI and ISAPI.dll by ticking Execute on Edit Feature Permissions. 3.1. If you open the dll on the server browser now, you receive a 404.2 error, stating that you have not added the dll to the CGI and ISAPI Restrictions List, which means it is recognizing that the dll file as an ISAPI dll file.
  4. In IIS Manager, on the server tab on the left, opening the CGI and ISAPI Restriction feature, added the dll file and made sure to Allow access. I also tried to update the Feature Settings to enable all unspecified DLL and CGI files, just to cover all bases. 4.1. Now, if you open the dll in the browser you should see some results (even if it is an error 500 if some supporting files or database connections don't work), but instead I get a 404.0 error that the file is missing or moved.

I have tried every possible combination of all the suggestions on the web, but effectively all of them come back to the steps above.

I enabled tracking for the 404 error, but all it says is that the Component cannot be found.

Further testing found that this is specific to 32bit dll files. Running the 32bit dll file with Enable 32bit set to true gives the 404.0 error, running a 64bit dll file with the Enable 32bit set to false runs without any problems. Not having the Enable 32bit set correctly results in an error 500 as expected on both files.

Any assistance to point me in the right direction will be helpful.

1

There are 1 best solutions below

5
samwu On

You can try this solution:

  1. Open the IIS administrative Manager tool, highlight your server, and open ISAPI and CGI Restrictions

  2. Right-click the restriction that restricts the requested ISAPI resource or the requested CGI resource, and then choose Edit Feature Settings.

  3. Tick the relevant box (either Allow unspecified CGI modules or Allow unspecified ISAPI modules) depending on which technology you intend to use. If unsure, simply tick both, then click OK.