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; } }