Hi,
I have an application virtual directory in IIS 7 which contains two CGI executable applications written in Delphi. Prior to IIS 7, we could send requests to these CGI executables via URL i.e. http://servername/cgi-bin/cgi.exe/request which would then result in the CGI running as a process on the server and responding to the request.
In IIS 5.1 and earlier, we just created an application virtual directory and pointed it to the location of the CGI executables on the web server hard disk. In IIS 6, we had to enable the Web Service Extensions in order for the CGI executables to run. However, we are now testing IIS 7 and I have been unable to get the executable to work.
When I make a request (which would normally work in IIS 6 and earlier) through Internet Explorer, the page I get is as follows:
Server Error in Application "Default Web Site/CGI-BIN"
--------------------------------------------------------------------------------
HTTP Error 404.2 - Not Found
Description: The page you are requesting cannot be served because of the ISAPI and CGI Restriction list settings on the Web server.
Error Code: 0x800704ec
Notification: ExecuteRequestHandler
Module: CgiModule
Requested URL: http://stevenv-vista:80/cgi-bin/testcgi.exe/runtest
Physical Path: C:\Program Files\Testing CGI\testcgi.exe\runtest
Logon User: Anonymous
Logon Method: Anonymous
Failed Request Tracing Log Directory: C:\inetpub\logs\FailedReqLogFiles
Handler: CGI-exe
Most likely causes:
No handler mapping for this request was found. A feature may have to be installed.
The Web service extension for the requested resource is not enabled on the server.
The mapping for the extension points to the incorrect location.
The extension was misspelled in the browser or the Web server.
What you can try:
Install the feature that handles this request. For example, if you get this error for an .ASPX page, you may have to install ASP.NET via IIS setup.
Verify that the Web service extension requested is enabled on the server.
Open the IIS Manager and navigate to the server level.
In the Features view, double-click ISAPI and CGI Restrictions to verify that the Web service extension is set to Allowed.
If the extension is not in the list, click Add in the Actions pane.
In the Add ISAPI and CGI Restrictions dialog box, type the path of the .dll or .exe file in the ISAPI or CGI Path box, or click Browse to navigate to the location of the file.
In the Description box, type a brief description of the restriction.
(Optional) Check "Allow extension path to execute" to allow the restriction to run automatically. If you do not check this option, the restriction status is Not Allowed, which is the default. You can allow the restriction later by selecting it and clicking Allow on the Actions pane.
Click OK.
NOTE: Make sure that this Web service extension or CGI is needed for your Web server before adding it to the list.
Verify that the location of the extension is correct.
Verify that the URL for the extension is spelled correctly both in the browser and the Web server.
Create a tracing rule to track failed requests for this HTTP status code. For more information about creating a tracing rule for failed requests, click here.
More Information... This error occurs when the necessary Web service extension is not enabled, the location or the name of the extension are misspelled or incorrectly entered.
--------------------------------------------------------------------------------
Server Version Information: Internet Information Services 7.0
I've enabled Failed Request Tracing on the webserver and my log file contains:
SECURITY_DENIED_BY_CGI_RESTRICTION
Warning
ImageName="C:\Program Files\Testing CGI\testcgi.exe"
MODULE_SET_RESPONSE_ERROR_STATUS
Warning
ModuleName="CgiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="404", HttpReason="Not Found", HttpSubStatus="2", ErrorCode="This program is blocked by group policy. For more information, contact your system administrator. (0x800704ec)", ConfigExceptionInfo=""
Any ideas?