2009-06-18 2 views
4

Wir haben eine Webanwendung, die bis jetzt unter der "Standard-Website" in IIS installiert wurde. Ein Kunde möchte nun, dass wir ihn auf einer anderen Website installieren, und zwar vom Installationsprogramm aus. Meine Frage besteht aus 2 Teilen: A) Wie füge ich programmatisch eine andere Website neben der Standard-Website hinzu? B) Wir verwenden Windows Installer - Gibt es eine Möglichkeit, den Code, den ich für Abschnitt A schreibe, innerhalb des Installers auszulösen, damit die Installation am neuen Ort stattfinden kann? Es sieht so aus, als würde Install() zu spät ins Spiel kommen ...Wie programmiere ich eine Website (C#) programmatisch zu IIS 6.0?

Antwort

3

wir ein js Fenster Skript verwenden unsere virtuellen Verzeichnisse zwischen den Zweigen zu aktualisieren, könnte ich mich vorstellen, dass Sie die gleichen Objekte verwenden könnten eine Website

var iisPath = "IIS://localhost/W3SVC/" + siteID; 
var site = GetObject(iisPath); 

Microsoft hat ein fairly extensive article zum Konfigurieren von IIS 6 programmatisch zu erstellen. Solange Ihr MSI eine Batch-Datei aufrufen kann, sollte dieser Artikel helfen.

This article hat auch eine vollständige Skriptdatei, die eine Website erstellt.

+0

I Ich vermute, ich vermutete, dass die Website C# nicht das angeforderte Programm war. Es gibt jedoch keinen Grund, warum diese Objekte nicht in C# verwendet werden können. –

1

Wenn Sie WiX zum Erstellen Ihres MSI verwenden, lesen Sie this question.

+0

Nö, keine WiX hier nur grundlegende Windows Installer (. Oh, die Freude ... nicht) –

0

Nicht wirklich ein Experte für MSI-Dateien, aber Sie können eine Website durch Skripting mit adsutil.vbs hinzufügen. Der Weg des armen Mannes, dies zu handhaben, besteht darin, dass das Installationsprogramm die Dateien an einem Ort ablegt, ohne eine Website zu erstellen, und dann einen späteren Schritt mit dem Skript ausführt, um eine Website mit dem Stamm an diesem Ort zu erstellen. Bonuspunkte, um das für nackte IIS-Administratoren wie mich, die es hassen, dass Installateure IIS überhaupt berühren, optional zu machen.

2

Hier einige C# -Code für programmatisch eine Website zu erstellen:

1 using System.DirectoryServices; 
2 using System; 
3  
4 public class IISAdmin 
5 { 
6  public static int CreateWebsite(string webserver, string serverComment, string serverBindings, string homeDirectory) 
7  { 
8   DirectoryEntry w3svc = new DirectoryEntry("IIS://localhost/w3svc"); 
9   
10   //Create a website object array 
11   object[] newsite = new object[]{serverComment, new object[]{serverBindings}, homeDirectory}; 
12   
13   //invoke IIsWebService.CreateNewSite 
14   object websiteId = (object)w3svc.Invoke("CreateNewSite", newsite); 
15   
16   return (int)websiteId; 
17  
18  } 
19 
20  public static void Main(string[] args) 
21  { 
22   int a = CreateWebsite("localhost", "Testing.com", ":80:Testing.com", "C:\\inetpub\\wwwroot"); 
23   Console.WriteLine("Created website with ID: " + a); 
24  } 
25  
26 } 

Referenz: http://www.it-notebook.org/iis/article/cs_create_website_iis6.htm