CGI <cgi>

Übersicht

Das <cgi>-Element konfiguriert Standardeinstellungen für CGI-Anwendungen (Common Gateway Interface, gemeinsame Gatewayschnittstelle) für Internetinformationsdienste 7 (Internet Information Services, IIS). Diese Einstellungen definieren die Umgebung, die IIS 7 beim Starten von CGI-Prozessen verwendet. Die Attribute createCGIWithNewConsole und createProcessAsUser geben beispielsweise an, wie eine CGI-Anwendung von IIS 7 gestartet wird, und das timeout-Attribut gibt an, wie lange eine CGI-Anwendung ausgeführt werden kann, bevor IIS den Prozess beendet.

CGI wird manchmal als Legacyanwendungsumgebung betrachtet. Aufgrund des zusätzlichen Verarbeitungsaufwands, der entsteht, wenn CGI-Anwendungen als separate Prozesse gestartet werden, werden bei der Anwendungsentwicklung Technologien wie HTTP-Module, ISAPI-Erweiterungen, ASP/ASP.NET und FastCGI bevorzugt.

Hinweis

Die CGI-Umgebung ist standardmäßig nicht installiert. Im Zuge der Installation der CGI-Umgebung werden allerdings auch die erforderlichen Funktionen für die Verwendung von FastCGI-Anwendungen installiert. Weitere Informationen zur Verwendung von FastCGI in IIS 7 finden Sie im Element <fastCgi>.

Kompatibilität

Version Hinweise
IIS 10.0 Das <cgi>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <cgi>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <cgi>-Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <cgi>-Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <cgi>-Element wurde in IIS 7.0 eingeführt.
IIS 6.0 Die Attribute für das <cgi>-Element ersetzen die folgenden Metabasiseigenschaften von IIS 6.0: CreateProcessAsUser, CreateCGIWithNewConsole und CGITimeout.

Setup

Das <cgi>-Element ist nicht in der Standardinstallation von IIS 7 und höheren Versionen enthalten. Um die CGI-Umgebung verwenden zu können, muss zunächst der CGI-Rollendienst installiert werden. Der Installationsprozess registriert den CGI-Rollendienst (Common Gateway Interface, gemeinsame Gatewayschnittstelle) sowohl im <globalModules>-Element als auch im <modules>-Element.

Windows Server 2012 oder Windows Server 2012 R2

  1. Klicken Sie auf der Taskleiste auf Server-Manager.
  2. Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
  3. Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.
  4. Erweitern Sie auf der Seite Serverrollen die Option Webserver (IIS), erweitern Sie Webserver, erweitern Sie Anwendungsentwicklung, und wählen Sie dann CGI aus. Klicken Sie auf Weiter.
    Screenshot of the Server Roles page. The C G I option is selected and highlighted.
  5. Klicken Sie auf der Seite Features auswählen auf Weiter.
  6. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  7. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8 oder Windows 8.1

  1. Bewegen Sie auf dem Startbildschirm den Mauszeiger ganz nach links unten, klicken Sie mit der rechten Maustaste auf die Schaltfläche Start, und klicken Sie dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste > WWW-Dienste > Anwendungsentwicklungsfeatures, und wählen Sie anschließend CGI aus.
    Screenshot of the Application Development Features navigation tree. C G I is selected and highlighted.
  4. Klicken Sie auf OK.
  5. Klicken Sie auf Schließen.

Windows Server 2008 oder Windows Server 2008 R2

  1. Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungstools, und klicken Sie dann auf Server-Manager.
  2. Erweitern Sie im Hierarchiebereich Server-Manager die Option Rollen, und klicken Sie dann auf Webserver (IIS).
  3. Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt Rollendienste, und klicken Sie dann auf Rollendienste hinzufügen.
  4. Wählen Sie auf der Seite Rollendienste auswählen des Assistenten zum Hinzufügen von Rollendiensten die Option CGI aus, und klicken Sie dann auf Weiter.
    Screenshot of the Add Role Services Wizard navigation tree. C G I is selected and highlighted.
  5. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  6. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows Vista oder Windows 7

  1. Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste, wählen Sie CGI aus, und klicken Sie anschließend auf OK.
    Screenshot of the Internet Information Services navigation tree. Application Development Features is expanded. C G I is selected and highlighted.

Gewusst wie

Konfigurieren von CGI-Einstellungen für eine Site

  1. Öffnen Sie Internetinformationsdienste-Manager (IIS-Manager):

    • Vorgehensweise unter Windows Server 2012 oder Windows Server 2012 R2:

      • Klicken Sie auf der Taskleiste auf Server-Manager > Tools > Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows 8 oder Windows 8.1:

      • Halten Sie die WINDOWS-TASTE gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
      • Klicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows Server 2008 oder Windows Server 2008 R2:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung, und klicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows Vista oder Windows 7:

      • Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
      • Doppelklicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
  2. Erweitern Sie im Bereich Verbindungen den Servernamen, erweitern Sie Sites, und navigieren Sie dann zu der Website oder Webanwendung, die Sie konfigurieren möchten.

  3. Doppelklicken Sie im Bereich Start der Site oder Anwendung auf CGI.
    Screenshot of the Home pane. The C G I icon is highlighted.

  4. Konfigurieren Sie im Bereich CGI die erforderlichen Einstellungen, und klicken Sie anschließend im Bereich Aktionen auf Anwenden.
    Screenshot of the C G I pane. In the Display box, Friendly Names is chosen. The Behavior and Security categories are shown.

Konfiguration

Attribute

Attribut Beschreibung
createCGIWithNewConsole Optionales boolesches Attribut.

Gibt an, ob eine CGI-Anwendung in einer eigenen Konsole ausgeführt wird.

Hinweis: Wenn der Wert auf truefestgelegt ist, erstellt jede CGI-Anwendung beim Starten der Anwendung eine neue Konsole. Der Wert false gibt an, dass CGI-Anwendungen ohne Konsole ausgeführt werden sollen.

Der Standardwert ist false.
createProcessAsUser Optionales boolesches Attribut.

Gibt an, ob ein CGI-Prozess im Systemkontext oder im Kontext des anfordernden Benutzers erstellt wird.

Der Standardwert ist true.
timeout Optionales timeSpan-Attribut.

Gibt das Timeout für eine CGI-Anwendung an.

Der Standardwert ist 00:15:00 (15 Minuten).

Untergeordnete Elemente

Keine.

Konfigurationsbeispiel

Im folgenden Konfigurationsbeispiel wird angegeben, dass jede CGI-Anwendung beim Starten der Anwendung eine neue Konsole erstellen soll, dass CGI-Prozesse im Kontext des anfordernden Benutzers erstellt werden sollen und dass das Timeout für CGI-Anwendungen 20 Minuten betragen soll.

<configuration>
   <system.webServer>
      <cgi createCGIWithNewConsole="true"
         createProcessAsUser="false"
         timeout="00:20:00" />
   </system.webServer>
</configuration>

Beispielcode

In den folgenden Codebeispielen wird angegeben, dass jede CGI-Anwendung beim Starten der Anwendung eine neue Konsole erstellen soll, dass CGI-Prozesse im Kontext des anfordernden Benutzers erstellt werden sollen und dass das Timeout für CGI-Anwendungen 20 Minuten betragen soll.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/cgi /createCGIWithNewConsole:"True" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/cgi /createProcessAsUser:"False" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/cgi /timeout:"00:20:00" /commit:apphost

Hinweis

Legen Sie den commit-Parameter auf apphost fest, wenn Sie „AppCmd.exe“ verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei „ApplicationHost.config“ festgelegt.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection cgiSection = config.GetSection("system.webServer/cgi", "Default Web Site");

         cgiSection["createCGIWithNewConsole"] = true;
         cgiSection["createProcessAsUser"] = false;
         cgiSection["timeout"] = TimeSpan.Parse("00:20:00");

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim cgiSection As ConfigurationSection = config.GetSection("system.webServer/cgi", "Default Web Site")

      cgiSection("createCGIWithNewConsole") = True
      cgiSection("createProcessAsUser") = False
      cgiSection("timeout") = TimeSpan.Parse("00:20:00")

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var cgiSection = adminManager.GetAdminSection("system.webServer/cgi", "MACHINE/WEBROOT/APPHOST/Default Web Site");

cgiSection.Properties.Item("createCGIWithNewConsole").Value = true;
cgiSection.Properties.Item("createProcessAsUser").Value = false;
cgiSection.Properties.Item("timeout").Value = "00:20:00";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set cgiSection = adminManager.GetAdminSection("system.webServer/cgi", "MACHINE/WEBROOT/APPHOST/Default Web Site")

cgiSection.Properties.Item("createCGIWithNewConsole").Value = True
cgiSection.Properties.Item("createProcessAsUser").Value = False
cgiSection.Properties.Item("timeout").Value = "00:20:00"

adminManager.CommitChanges()