2009-03-24 3 views
1

Ich habe eine Methode, die ein virtuelles Verzeichnis erstellt. Wie kann ich das .NET Framework auf Version 2 festlegen, während ich das virtuelle Verzeichnis erstelle?Wie kann ich die Version von .NET Framework festlegen, die beim Erstellen eines IIS-Verzeichnisses verwendet wird?

Meine Methode sieht wie folgt aus so weit:

private static void CreateVDir(string metabasePath, string vDirName, string physicalPath) 
{ 
    // metabasePath is of the form "IIS://<servername>/<service>/<siteID>/Root[/<vdir>]" 
    // for example "IIS://localhost/W3SVC/1/Root". 
    // vDirName is of the form "<name>", for example, "MyNewVDir". 
    // physicalPath is of the form "<drive>:\<path>", for example, "C:\Inetpub\Wwwroot". 
    Console.WriteLine("\nCreating virtual directory {0}/{1}, mapping the Root application to {2}:", 
         metabasePath, vDirName, physicalPath); 

    DirectoryEntry site = new DirectoryEntry(metabasePath); 
    string className = site.SchemaClassName; 
    if ((className.EndsWith("Server")) || (className.EndsWith("VirtualDir"))) 
    { 
     DirectoryEntries vdirs = site.Children; 
     DirectoryEntry newVDir = vdirs.Add(vDirName, (className.Replace("Service", "VirtualDir"))); 
     newVDir.Properties["Path"][0] = physicalPath; 
     newVDir.Properties["AccessScript"][0] = true; 
     // These properties are necessary for an application to be created. 
     newVDir.Properties["AppFriendlyName"][0] = vDirName; 
     newVDir.Properties["AppIsolated"][0] = "1"; 
     newVDir.Properties["AppRoot"][0] = 
      "/LM" + 
      metabasePath.Substring(metabasePath.IndexOf("/", ("IIS://".Length))); 
     newVDir.CommitChanges(); 
     Console.WriteLine(" Done."); 
    } 
    else 
     Console.WriteLine(
      " Failed. A virtual directory can only be created in a site or virtual directory node."); 
} 

Antwort

2

Die „Script“ Eigenschaft ist, wo die Konfigurationszuordnungen gespeichert zu bekommen. Das heißt, dass Sie * .aspx-Dateien zuordnen können, um von ASP.NET verarbeitet zu werden. Ein Beispiel ist in Creating ISAPI Mappings Programmatically.

+0

Ich wollte in Code die gleiche Sache tun, die Sie in der IIS-GUI tun können, wenn Sie die Eigenschaften des virtuellen Verzeichnisses öffnen, die ASP.NET-Seite aufrufen und die ASP.NET-Version aus dem Dropdown auswählen. Tut es das Gleiche? Weil ich möglicherweise muss es für verschiedene Arten von Dateien, z. * .svc – Grzenio

+0

Wenn Sie die Version im ASP.Net-Dialogfeld auswählen, werden die Skriptzuordnungen festgelegt und ein IIS-Reset durchgeführt. Das Ändern der ScriptMaps nach Code macht dasselbe. –

0

Nachdem Sie das virtuelle Verzeichnis erstellt haben, können Sie aspnet_regiis -s aus dem .NET Framework-Verzeichnis Ihrer Wahl ausführen.

Auf meinem Sytem, ​​würde der Befehl wie folgt aussehen:

C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_regiis -s W3SVC/1/ROOT/SampleApp1

I habe dies von einer benutzerdefinierten Aktion in meinem Installer erfolgreich getan.