Avatar billede -mundi- Nybegynder
12. marts 2005 - 21:06 Der er 5 kommentarer og
1 løsning

Oprette website med DirectoryEntry

Hej eksperter,

Jeg har følgende klasse, som jeg bruger til at oprette et website på en webserver. Har prøvet at oprette site både på win2k og win2k3 std. Men når jeg efterfølgende går ind på sitet via en browser får jeg :
HTTP/1.1 New Application Failed

Hvis jeg så manuelt går ind i "Home directory" fanebladet i properties for mit website og trykker på "remove" kanppen i "application settings" afsnittet, og derefter "create", Så virker sitet uden problemer ?

what to do ?

Klassen :
using System;
using System.DirectoryServices;

namespace exp
{
    /// <summary>
    /// Summary description for IISutils.
    /// </summary>
    public class IISutils {

        public IISutils() {
        }

        public int CreateWebSite(string webSiteName, string pathToRoot) {
            return CreateWebSite(webSiteName, pathToRoot, false);
        }

        public int CreateWebSite(string webSiteName, string pathToRoot, bool createDir) {
            DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC");
            // Find unused ID value for new web site
            int siteID = 1;
            foreach(DirectoryEntry e in root.Children) {
                if(e.SchemaClassName == "IIsWebServer") {
                    int ID = Convert.ToInt32(e.Name);
                    if(ID >= siteID) {
                        siteID = ID+1;
                    }
                }
            }

            // Create web site
            DirectoryEntry site = (DirectoryEntry)root.Invoke("Create", "IIsWebServer", siteID);
            site.Invoke("Put", "ServerComment", webSiteName);
            site.Invoke("Put", "KeyType", "IIsWebServer");
            site.Invoke("Put", "ServerBindings", ":80:"+webSiteName);
            site.Invoke("SetInfo");
            site.Invoke("Put", "DefaultDoc", "Default.asp,default.aspx");
            site.Invoke("Put", "ServerAutoStart", 0);
            site.Invoke("Put", "ServerSize", 2);
            site.Invoke("SetInfo");

            // Create application virtual directory
            DirectoryEntry siteVDir = (DirectoryEntry)site.Invoke("Create","IIsWebVirtualDir", "ROOT");
            siteVDir.Properties["Path"][0] = pathToRoot;
            site.Invoke("SetInfo");
            siteVDir.Properties["AppFriendlyName"][0]=webSiteName + " Application";
            siteVDir.Properties["AppIsolated"][0] = 2;   
            siteVDir.Properties["FrontPageWeb"][0] = 0;
            siteVDir.Invoke("AppCreate2",2);
            siteVDir.Properties["AppPoolId"][0]= "DefaultAppPool";
            siteVDir.Properties["AccessRead"][0] = 1;
            siteVDir.Properties["AccessWrite"][0] = 0;
            siteVDir.Properties["EnableDirBrowsing"][0] = 1;
            siteVDir.Properties["EnableDefaultDoc"][0] = 1;
            siteVDir.Properties["AccessScript"][0] = 1;
            siteVDir.Properties["AppRoot"][0] = "LM/W3SVC/"+siteID+"/Root";
            siteVDir.Properties["EnableDirBrowsing"][0] = 0;
            site.CommitChanges();
            siteVDir.CommitChanges();
            return siteID;
        }
    }

}
Avatar billede Syska Mester
13. marts 2005 - 11:03 #1
ikke at jeg ved det, men lytter da lige med.....
Avatar billede -mundi- Nybegynder
16. marts 2005 - 11:32 #2
finder på noget andet
Avatar billede staever Nybegynder
08. marts 2006 - 21:27 #3
Tænkte på Mundi, om du havde fundet en måde, at oprette det web site i IIS 5.0 (Win2k), for jeg har snart lede hele nettet igennem, uden held. Det eneste jeg har fundet er hele programmer der kan styre IIS, men dem kan jeg knap gennemskue.
Avatar billede -mundi- Nybegynder
09. marts 2006 - 09:13 #4
public int CreateWebSite(string webSiteName, string pathToRoot, bool createDir)
{
      DirectoryEntry entry1 = new DirectoryEntry("IIS://localhost/W3SVC");
      int num1 = 1;
      foreach (DirectoryEntry entry2 in entry1.Children)
      {
            if (entry2.SchemaClassName != "IIsWebServer")
            {
                  continue;
            }
            int num2 = Convert.ToInt32(entry2.Name);
            if (num2 >= num1)
            {
                  num1 = num2 + 1;
            }
      }
      DirectoryEntry entry3 = (DirectoryEntry) entry1.Invoke("Create", new object[] { "IIsWebServer", num1 });
      entry3.Invoke("Put", new object[] { "ServerComment", webSiteName });
      entry3.Invoke("Put", new object[] { "KeyType", "IIsWebServer" });
      entry3.Invoke("Put", new object[] { "ServerBindings", ":80:" + webSiteName });
      entry3.Invoke("SetInfo", new object[0]);
      entry3.Invoke("Put", new object[] { "DefaultDoc", "Default.asp,default.aspx" });
      entry3.Invoke("Put", new object[] { "ServerAutoStart", 1 });
      entry3.Invoke("Put", new object[] { "ServerSize", 2 });
      entry3.Invoke("SetInfo", new object[0]);
      DirectoryEntry entry4 = (DirectoryEntry) entry3.Invoke("Create", new object[] { "IIsWebVirtualDir", "ROOT" });
      entry4.Properties["Path"][0] = pathToRoot;
      entry4.CommitChanges();
      entry4.Properties["AppFriendlyName"][0] = webSiteName + " Application";
      entry4.Properties["AppIsolated"][0] = 2;
      entry4.Properties["FrontPageWeb"][0] = 0;
      entry4.Properties["AppPoolId"][0] = "DefaultAppPool";
      entry4.Properties["AccessRead"][0] = 1;
      entry4.Properties["AccessWrite"][0] = 0;
      entry4.Properties["EnableDirBrowsing"][0] = 1;
      entry4.Properties["EnableDefaultDoc"][0] = 1;
      entry4.Properties["AccessScript"][0] = 1;
      entry4.Properties["AppRoot"][0] = "/LM/W3SVC/" + num1 + "/Root";
      entry4.Properties["EnableDirBrowsing"][0] = 0;
      entry3.CommitChanges();
      entry4.CommitChanges();
      return num1;
}
Avatar billede -mundi- Nybegynder
09. marts 2006 - 09:13 #5
Kræver slf at du enten impersonater en bruger der har adgang til IIS, eller giver den bruger der kører scriptet rettigheder til det
Avatar billede staever Nybegynder
09. marts 2006 - 09:58 #6
Mange tak hr ... vil jeg lige forsøge mig med senere, fandt dog også noget igår efter jeg havde postet indlægget, men der manglede lige lidt i forhold til det du har med.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester