IIS Express und Visual Studio – Externen Zugriff erlauben

hierGelegentlich kann es nützlich sein, einen Kollegen auf seinen lokalen IIS-Express zu lassen, während die WebApp im Debug läuft – oder man will sich einfach mal mit einem mobilen Device anschauen, ob das ganze Projekt auch noch auf einem kleinen Display gut aussieht und mit Touch auch wirklich so läuft, wie man sich das gedacht hat…

Über die Einstellungen in Visual Studio kann man das nicht konfigurieren und auch in der UI des IIS-Express wurde ich nicht fündig.

Nachdem ich Bing bemüht habe, klappt es dann doch relativ simpel!

Ich setze voraus, dass die WebApplication bereits über den IISExpress genutzt wird (Project-Settings -> Web -> „Use Local IIS Web Server“). Die Project Url in meinem Fall lautet „http://localhost:7000/digoso-web“

Zunächst einmal muss die Kommandozeile mit Admin-Rechten gestartet werden, um Konfigurationen über die NetworkShell auszuführen:

netsh http add urlacl url=http://*:7000/ user=Everyone

Damit ebnen wir den Weg für den Zugriff von extern auf unseren IIS (Info zu add urlacl)

Im nächsten Schritt müssen wir manuell in die Konfigurationsdatein ‚applicationhost.config‘ eingreifen. Das Config-File findet sich in aller Regel im Verzeichnis

%HomeDrive%\Documents\IISExpress\config

Im Node „sites“ sollte ein Site-Child liegen, dem als Name -Attribut der Name des Projekts zugewiesen ist. Dieser Node muss editiert werden!

Unter dem Bindings-Node findet man die Information, wie auf die URL zugegriffen werden darf.

<binding protocol=http bindingInformation=*:7000:localhost />

Die Standard-Einstellung stellt sicher, dass nur von localhost der Aufruf erlaubt ist.

Ersetzt man nun ‚localhost‘ gegen den Namen des Computers (z.B. digoso-pc)

<binding protocol=http bindingInformation=*:7000:digoso-pc />

kann man auf den IIS via „http://digoso-pc:7000/digoso-web&#8220; zugreifen und man muss (leider) die Start-Url des IIS so umbiegen, dass sie den Namen des Computers enthält – was allerdings unschön ist, wenn man im Team arbeitet und jeder Computer anders heißt…

Trägt man statt dem PC-Namen einfach ein * ein, kann jeder im Netzwerk auf den IIS mit der URL zugreifen und es müssen keine Änderungen an der Startseite gemacht werden.

<site name="digoso.WebApplication-Site" id="1">
    <application 
        path="/" 
        applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory 
            path="/" 
            physicalPath="\\...\My Web Sites\digoso.WebApplication-Site1" />
    </application>
    <application 
        path="/digoso-web" applicationPool="Clr4IntegratedAppPool">
    <virtualDirectory path="/" 
        physicalPath="......\digoso.WebApplication" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:7000:*" />
    </bindings>
</site>