Montag , 8 März 2021

Mehrere Webseiten in einer Windows Azure Web Rolle betreiben

Azure LogoSeit der Windows Azure SDK 1.3 steht ein vollständiger IIS 7.5 in den Web Rollen zur Verfügung. Somit lassen sich auch mehrere Webseiten in einer Web Rolle betreiben.

Hierzu ein kleines Beispiel…

 

Der Windows Azure Host

Wie gewohnt lege ich als Erstes ein neues Windows Azure Projekt an.

Projektvorlage: Windows Azure Project

Als Nächstes füge ich eine ASP.NET Web Role hinzu, die später als Host für die Web Applikationen dienen soll. Deshalb bekommt die Rolle auch den Namen "MultiWebseitenDemo.Host".

Windows Azure Rollen Dialog

Da die hinzugefügte Web Rolle nur ein Platzhalter ist, lösche ich alle Projektdateien und Verzeichnisse, mit Ausnahme der WebRole.cs Datei.

 

Die Web Applikationen

Im nächsten Schritt füge ich der Solution einige Web Projekte hinzu:

Ein ASP.NET MVC 2 Web Application Projekt mit dem Namen "StandardWebseite" …

Projektvorlage: ASP.NET MVC 2 Web Application

… ein ASP.NET Web Application Projekt mit dem Namen "MeineTestWebseite1" …

Projektvorlage: ASP.NET Web Application

… und ein Silverlight Application Projekt mit dem Namen "SilverlightImVirtualDirectory" …

Projektvorlage: Silverlight Application

Web Applikation hinzufügen für das Silverlight Projekt

Nach dem Hinzufügen der Web Projekte, muss ggf. das Windows Azure Projekt wieder als Startprojekt gesetzt werden.

Solution Explorer - Startprojekt setzen 

 

Einbinden der Web Applikationen

Zum Einbinden der Web Applikationen in das Windows Azure Projekt, muss die ServiceDefinition.csdef Datei editiert werden.

Dort befindet sich bereits ein Eintrag für die Web Rolle "MultiWebseitenDemo.Host".

ServiceDefinition.csdef (vorher)

Für das "StandardWebseite" und "MeineTestWebseite1" Projekt, lege jeweils ein <Site> Tag inkl. <Bindings></Bindings> an.
Im <Site> Tag wird jeweils das name und physicalDirectory Attribut gesetzt.

Wichtig:
Beim name Attribut darf nicht der Standardwert "Web" benutzt werden, da sonst der physicalPath ignoriert und der Pfad der "Host" Web Rolle benutzt wird.

Im <Binding> Tag, des "MeineTestWebseite1" Projektes, muss noch das hostHeader Attribut auf "www.MeineTestWebseite1.de" gesetzt werden. Somit können die Projekte später unterschiedlich adressiert werden.

ServiceDefinition.csdef (mit Webseiten)

Das "SilverlightImVirtualDirectory" Projekt soll in einem virtuellen Verzeichnis des "StandardWebseite" Projektes betrieben werden.
Hierzu habe ich, im Eintrag des "StandardWebseite" Projektes, ein <VirtualApplication> Tag mit dem name und physicalPath Attribut hinzugefügt. Der Wert des name Attributes, wird später als Name des virtuellen Verzeichnisses benutzt. ServiceDefinition.csdef (mit virtuellem Verzeichnis) 

 

Beispielapplikation testen

Um die Beispielapplikation testen zu können, muss noch ein Eintrag, für die "www.MeineTestWebseite1.de" URL, in die hosts Datei des Betriebssystems hinzugefügt werden.

hosts Datei

Speichern und zurück zu Visual Studio …

Nach einem Druck auf die F5-Taste, wird die Startseite des "StandardWebseite" Projektes angezeigt:

Startseite des 'StandardWebseite' Projektes

Wenn die URL mit "/Silverlight/" erweitert wird, kommt die Silverlight Applikation zum Vorschein:

Startseite des 'SilverlightImVirtualDirectory' Projektes

Mit der, durch die hosts Datei umgebogenen, "www.MeineTestWebseite1.de" URL, wird das "MeineTestWebseite1" Projekt angezeigt:

Startseite des 'MeineTestWebseite1' Projektes

Ein Blick in den IIS Manager zeigt, dass die Webseiten und das virtuelle Verzeichnis für jede VM Instanz (in diesem Fall die Instanz mit der ID 0) angelegt wurde.

IIS Manager

 

Weitere Informationen:
Windows Azure Team Blog: New Full IIS Capabilities – Differences from Hosted Web Core

 


Download Download der Beispielanwendung:
MultiWebseitenDemo.zip (431,63 kb)