Avatar billede -mundi- Nybegynder
11. marts 2005 - 14:10 Der er 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 -mundi- Nybegynder
12. marts 2005 - 21:07 #1
prøver at lægge den i C# istedet
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
Kurser inden for grundlæggende programmering

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