public void CreateVirtualRootEx(string rootWebServer, string inBaseUrl, string inVirtualRoot, string homePage, string discoFile, string secureSockets, string authentication, string operation, out string baseUrl, out string virtualRoot, out string physicalPath)
 {
     baseUrl = "";
     virtualRoot = "";
     physicalPath = "";
     bool inDefault = true;
     bool windowsAuth = true;
     bool anonymous = false;
     bool flag4 = false;
     bool flag5 = false;
     bool impersonate = true;
     try
     {
         new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
         if ((inBaseUrl.Length > 0) || (inVirtualRoot.Length > 0))
         {
             string str = "IIS://localhost/W3SVC/1/ROOT";
             if (rootWebServer.Length > 0)
             {
                 str = rootWebServer;
             }
             if (authentication.ToLower(CultureInfo.InvariantCulture) == "anonymous")
             {
                 anonymous = true;
                 windowsAuth = false;
                 impersonate = false;
             }
             flag4 = SoapServerInfo.BoolFromString(discoFile, flag4);
             flag5 = SoapServerInfo.BoolFromString(homePage, flag5);
             inDefault = SoapServerInfo.BoolFromString(secureSockets, inDefault);
             string inProtocol = "https";
             if (!inDefault)
             {
                 inProtocol = "http";
             }
             SoapServerInfo.CheckUrl(inBaseUrl, inVirtualRoot, inProtocol);
             SoapServerInfo.ParseUrl(inBaseUrl, inVirtualRoot, inProtocol, out baseUrl, out virtualRoot);
             physicalPath = SoapServerInfo.ServerPhysicalPath(str, inBaseUrl, inVirtualRoot, true);
             SoapServerConfig.Create(physicalPath, impersonate, windowsAuth);
             if (flag4)
             {
                 new DiscoFile().Create(physicalPath, "Default.disco");
             }
             else if (File.Exists(physicalPath + @"\Default.disco"))
             {
                 File.Delete(physicalPath + @"\Default.disco");
             }
             if (flag5)
             {
                 HomePage page = new HomePage();
                 string discoRef = "";
                 if (flag4)
                 {
                     discoRef = "Default.disco";
                 }
                 page.Create(physicalPath, virtualRoot, "Default.aspx", discoRef);
             }
             else if (File.Exists(physicalPath + @"\Default.aspx"))
             {
                 File.Delete(physicalPath + @"\Default.aspx");
             }
             IISVirtualRootEx.CreateOrModify(str, physicalPath, virtualRoot, inDefault, windowsAuth, anonymous, flag5);
         }
     }
     catch (Exception exception)
     {
         if ((exception is NullReferenceException) || (exception is SEHException))
         {
             throw;
         }
         ComSoapPublishError.Report(Resource.FormatString("Soap_VRootCreationFailed") + " " + virtualRoot);
         throw;
     }
 }