/// <include file='doc\SoapServerVroot.uex' path='docs/doc[@for="SoapServerVRoot.CreateVirtualRootEx"]/*' /> 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 ) { // if Operation if an empty string, the VRoot will be published baseUrl = ""; virtualRoot = ""; physicalPath = ""; bool bSSL = true; bool bWindowsAuth = true; bool bAnonymous = false; bool bDiscoFile = false; bool bHomePage = false; bool bImpersonate = true; try { SecurityPermission sp = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode); sp.Demand(); Platform.Assert(Platform.Whistler, "SoapServerVRoot.CreateVirtualRootEx"); if (inBaseUrl.Length <= 0 && inVirtualRoot.Length <= 0) { return; } string rootWeb = "IIS://localhost/W3SVC/1/ROOT"; if (rootWebServer.Length > 0) { rootWeb = rootWebServer; } if (authentication.ToLower(CultureInfo.InvariantCulture) == "anonymous") { bAnonymous = true; bWindowsAuth = false; bImpersonate = false; } bDiscoFile = SoapServerInfo.BoolFromString(discoFile, bDiscoFile); bHomePage = SoapServerInfo.BoolFromString(homePage, bHomePage); bSSL = SoapServerInfo.BoolFromString(secureSockets, bSSL); string protocol = "https"; if (!bSSL) { protocol = "http"; } SoapServerInfo.ParseUrl(inBaseUrl, inVirtualRoot, protocol, out baseUrl, out virtualRoot); physicalPath = SoapServerInfo.ServerPhysicalPath(rootWeb, inBaseUrl, inVirtualRoot, true); SoapServerConfig.Create(physicalPath, bImpersonate, bWindowsAuth); if (bDiscoFile) { DiscoFile webDisco = new DiscoFile(); webDisco.Create(physicalPath, "Default.disco"); } else { if (File.Exists(physicalPath + "\\Default.disco")) { File.Delete(physicalPath + "\\Default.disco"); } } if (bHomePage) { HomePage webPage = new HomePage(); string discoFileName = ""; if (bDiscoFile) { discoFileName = "Default.disco"; } webPage.Create(physicalPath, virtualRoot, "Default.aspx", discoFileName); } else { if (File.Exists(physicalPath + "\\Default.aspx")) { File.Delete(physicalPath + "\\Default.aspx"); } } IISVirtualRootEx.CreateOrModify(rootWeb, physicalPath, virtualRoot, bSSL, bWindowsAuth, bAnonymous, bHomePage); } catch { string etxt = Resource.FormatString("Soap_VRootCreationFailed"); ComSoapPublishError.Report(etxt + " " + virtualRoot); throw; } }
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; } }