IIS Express 7.5

Für einen ASP.NET Webservice brauchte ich einen kleinen Webserver auf einem WindowsXP.
Normalerweise würde ich Cassini benutzen, doch da dieser von Microsofts IIS Express abgelöst wurde, war gerade ein guter Zeitpunkt sich eben diesen einmal näher anzuschauen.

Der IIS Express 7.5 installiert sich standardmäßig mit WebMatrix.
Möchte man dies nicht nutzen, gibt es von MS auch einen Stand-Alone IIS Express installer.
Diesen findet man auf: http://www.microsoft.com/web/gallery/install.aspx?appid=IISExpress
Der IIS Express wird dann durch den Web Platform Installer installiert.
Insgesamt ist das teil knapp 3,5 MB klein und schnell installiert.

Nach der Installation hat man allerdings keine Konfigurationskonsole oder ähnliches zur Verfügung.
Man Muss den IIS Express Manuell über die CMD starten.
Hierzu ruft man eine CMD auf und navigiert in das Verzeichnis in dem der IIS Express Installiert wurde: C:\Programme\IIS Express
In diesem Verzeichnis liegt die ausführbare iisexpress.exe.

Die Hilfe für die exe kann ganz normal über den /? Schalter angezeigt werden:

C:\Programme\IIS Express>iisexpress.exe /?

Beispiel für die Ausführung in der CMD finden sich auch auf: http://learn.iis.net/page.aspx/870/running-iis-express-from-the-command-line

Angenommen unser Verzeichnis in dem der Webservice liegen soll ist “c:\www\” und der IIS Express soll auf Port 80 lauschen, so können wir den IIS Express mit folgendem Befehl hierfür starten:

C:\Programme\IIS Express>iisexpress.exe /path:c:\www\ /port:80

Folgende Ausgabe ist dann in der CMD zu sehen:

C:\Programme\IIS Express>iisexpress.exe /path:c:\www\ /port:80
Copied template config file 'C:\Programme\IIS Express\AppServer\applicationhost.
config' to 'C:\DOKUME~1\SVENSC~1\LOKALE~1\Temp\iisexpress\applicationhost2011718
13757231.config'
Updated configuration file 'C:\DOKUME~1\SVENSC~1\LOKALE~1\Temp\iisexpress\applic
ationhost201171813757231.config' with given cmd line info.
IIS Express wird gestartet...
Successfully registered URL "http://localhost:80/" for site "Development Web Sit
e" application "/"
Registration completed
IIS Express wird ausgeführt.
Geben Sie "Q" ein, um IIS Express zu beenden.

Der IIS Express wird nun ausgeführt und man kann über http://localhost die Seiten in c:\www\ anschauen.
Tun wir dies auch, bekommen wir erst einmal ein 404 Fehler, weil es noch keine Seiten in diesem Verzeichnis gibt.
Also erstellen wir uns eine kleine Beispiel-Seite, welche auch gleich etwas ASP.NET benutzt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script Language=C# runat=server>
public class BspClass
{ 
  //Methode der Klasse
  public string ZeigeText(string strText)
  {
     return strText;
  }
}
</script>
<% @Page Language="C#" %>
<%
  BspClass bsp = new BspClass();
 
  Response.Write("Beispiel: " + bsp.ZeigeText("Hallo Welt!")+"<br>");
  Response.Write("Datetime: " + DateTime.Now.ToString()+"<br>");
  Response.Write(".NET FW : " + System.Environment.Version.ToString()+"<br>");
%>

Diesen Quellcode speichern wir jetzt als “default.aspx” in “c:\www\” ab.
Nach aktualisieren des Browsers bekommen wir folgendes angezeigt:

Beispiel: Hallo Welt!
Datetime: 18.07.2011 15:38:38
.NET FW : 4.0.30319.225

Alles schön so weit :-)

Doch bis jetzt haben wir nur Lokal gearbeitet.
Was jetzt, wenn ich von einem Anderen PC aus die Seite auf von dem IIS Express aufrufen möchte?
Ich rufe von einen Anderen PC “http://software-test/default.aspx” auf und bekomme den Fehler: “Bad Request (Invalid Hostname)”.

Blöd… hm… und nun?
Na gut – nettwerweise hat man den Ort der Config angegeben, dieser wird beim Starten des IIS Express angezeigt.
Der IIS Express benutzt die Congif mit den namen “applicationhost.config” aus dem verzeichnis “C:\Programme\IIS Express\AppServer”.
Dies ist eine Vorlage, aus der eine “echte” config erstellt wird, wenn man den IIS Express startet.
Diese “echte” config wird dann im verzeichnis “C:\DOKUME~1\SVENSC~1\LOKALE~1\Temp\iisexpress” abgelegt.

Kopiert man sich diese “echte” Config Datei jetzt in sein IIS Express Ordner (C:\Programme\IIS Express) und benennt sie in z.B. “test.config” um, so kann man diese Config jetzt bearbeiten und später auch im IIS Express laden.
Nach dem Öffnen der Datei suchen wir den Sites-Sbschnitt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        <sites>
            <site name="Development Web Site" id="1" serverAutoStart="true">
                <application path="/">
                    <virtualDirectory path="/" physicalPath="c:\www\" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation=":8080:localhost" />
                </bindings>
            </site>
            <siteDefaults>
                <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
                <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
            </siteDefaults>
            <applicationDefaults applicationPool="IISExpressAppPool" />
            <virtualDirectoryDefaults allowSubDirConfig="true" />
        </sites>

Speziell darin geht es dann um die “Binding” Config:

1
2
3
                <bindings>
                    <binding protocol="http" bindingInformation=":8080:localhost" />
                </bindings>

Dieses schreiben wir so um, das da der DNS Name unseres PC´s drin steht, auf welchem der IIS Express läuft (bei mir “software-test”):

1
2
3
                <bindings>
                    <binding protocol="http" bindingInformation=":8080:software-test" />
                </bindings>

Nun können wir den IIS mit den folgenden parametern in der CMD starten:

C:\Programme\IIS Express>iisexpress.exe /config:ta.config

Und bekommen dann die folgende Ausgabe:

IIS Express wird gestartet...
Successfully registered URL "http://software-test:80/" for site "Development Web
 Site" application "/"
Registration completed for site "Development Web Site"
IIS Express wird ausgeführt.
Geben Sie "Q" ein, um IIS Express zu beenden.

Nun können wir sowohl Lokal (über http://software-test) als auch von einem anderen PC aus auf die Seiten zugreifen.
Nur über http://localhost funktioniert es nicht mehr – aber Schwund ist ja immer irgendwo :-D

Ja – ich hoffe den einen oder anderen nutzt die Anleitung etwas.
Feedback gern gesehen (gelesen) :-)

Anmerkung:
Es spricht nicht dagegen z.b. folgendes zu tun:

1
2
3
4
<bindings>
    <binding protocol="http" bindingInformation=":80:software-test" />
    <binding protocol="http" bindingInformation=":80:localhost" />
</bindings>

Dann würde der IIS Express sowohl auf “http://software-test” als auch “http://localhost” hören :-)

3 Kommentare zu IIS Express 7.5

  1.  

    Hi Sven,
    sag mal, kann man nicht mehrere Bindings angeben, so dass die Seite auch über verschiedene Wege erreichbar ist?

    LG,
    MacX

  2. Ja!
    Es spricht nicht dagegen z.b. folgendes zu tun:

    1
    2
    3
    4
    
    <bindings>
        <binding protocol="http" bindingInformation=":80:software-test" />
        <binding protocol="http" bindingInformation=":80:localhost" />
    </bindings>

    Dann würde der IIS Express sowohl auf “http://software-test” als auch “http://localhost” hören :-)

     
  3.  

    Moin Sven,

    ist dir zufällig bekannt ob ichden IIS Express auch embedded nutzen kann?
    CassiniDev bietet diese Möglichkeit und das kann man gut für kleine projekte nutzen.

    Vor allem würde der Webserver ohne Umweg auf Daten der Anwendung zugreifen können – so die Idee. Und der User müsste nicht extre IIS Express installieren.

    Grüße Dominik

leave your comment


*

Unterstütze den Frickelblog!