public Models.ResponseMessage.ResponseMessage CreateApplication(Application app) { Microsoft.Web.Administration.ServerManager iisWeb = new Microsoft.Web.Administration.ServerManager(); iisWeb.Sites.Add(app.appName, "http", "*:80", app.appFolder); iisWeb.CommitChanges(); Microsoft.Web.Administration.Site site = iisWeb.Sites[app.appName]; site.Stop(); site.ApplicationDefaults.ApplicationPoolName = pool; site.Start(); iisWeb.CommitChanges(); Models.ResponseMessage.ResponseMessage rm = new ResponseMessage.ResponseMessage(); rm.type = "success"; rm.message = "Anwendung erfolgreich erstellt"; return(rm); }
private Site ParseSite(Microsoft.Web.Administration.Site iisSite) { var site = new Site(); site.Name = iisSite.Name; foreach (var application in iisSite.Applications.Where(x => x.Path != "/")) { var paths = application.Path.Split('/') .Where(path => path != string.Empty) .ToList(); if (paths.Count() >= 2) { ParseProject(site, paths); } } return(site); }
void publish(ExecutionLogInterface log, bool filesOnly) { log.Log("Starting Web Site Publishing..."); _publicationInError = false; try { string publicationDirectory = _configuration.WebPublicationDirectory; string sourceDirectory = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Web"); #if DEBUG sourceDirectory = Path.GetDirectoryName(Application.ExecutablePath) + @"\..\..\..\SealWebServer\"; #endif //Copy installation directory log.Log("Copying files from '{0}' to '{1}'", sourceDirectory, publicationDirectory); FileHelper.CopyDirectory(sourceDirectory, publicationDirectory, true); //Copy license files if any foreach (var path in Directory.GetFiles(Path.GetDirectoryName(Application.ExecutablePath), "*.slc")) { File.Copy(path, Path.Combine(Path.Combine(publicationDirectory, "bin"), Path.GetFileName(path)), true); } //Check web config... if (!filesOnly || (!File.Exists(Path.Combine(publicationDirectory, "web.config")) && File.Exists(Path.Combine(publicationDirectory, "web.release.config")))) { log.Log("Creating web.config file"); File.Copy(Path.Combine(publicationDirectory, "web.release.config"), Path.Combine(publicationDirectory, "web.config"), true); } if (!filesOnly && !log.IsJobCancelled()) { log.Log("Publishing Site on IIS..."); Microsoft.Web.Administration.ServerManager serverMgr = new Microsoft.Web.Administration.ServerManager(); Microsoft.Web.Administration.Site site = null; if (serverMgr.Sites.Count == 0) { log.Log("Creating Default Web Site"); site = serverMgr.Sites.Add("Default Web Site", "C:\\inetpub\\wwwroot", 80); } else { site = serverMgr.Sites[0]; } Microsoft.Web.Administration.ApplicationPool pool = serverMgr.ApplicationPools.FirstOrDefault(i => i.Name == _configuration.WebApplicationPoolName); if (pool == null) { log.Log("Creating Application Pool"); pool = serverMgr.ApplicationPools.Add(_configuration.WebApplicationPoolName); } pool.ManagedRuntimeVersion = "v4.0"; if (Marshal.SizeOf(typeof(IntPtr)) != 8) { pool.Enable32BitAppOnWin64 = true; //Test if 32bit } pool.ProcessModel.IdentityType = Microsoft.Web.Administration.ProcessModelIdentityType.LocalSystem; if (string.IsNullOrEmpty(_configuration.WebApplicationName)) { _configuration.WebApplicationName = "/"; } var application = site.Applications.FirstOrDefault(i => i.Path == _configuration.WebApplicationName); if (application == null) { log.Log("Creating Application"); application = site.Applications.Add(_configuration.WebApplicationName, _configuration.WebPublicationDirectory); } if (_configuration.WebApplicationName == "/") { Microsoft.Web.Administration.VirtualDirectory vDir = application.VirtualDirectories[0]; vDir.Path = _configuration.WebApplicationName; vDir.PhysicalPath = _configuration.WebPublicationDirectory; } application.ApplicationPoolName = _configuration.WebApplicationPoolName; if (!log.IsJobCancelled()) { serverMgr.CommitChanges(); } log.Log("Web Site has been published successfully."); } } catch (Exception ex) { _publicationInError = true; log.Log("\r\n[UNEXPECTED ERROR RECEIVED]\r\n{0}\r\n", ex.Message); if (ex.InnerException != null) { log.Log("{0}\r\n", ex.InnerException.Message); } } log.Log("Web Site Publishing terminated."); if (log.IsJobCancelled()) { log.Log("Publication has been cancelled."); } }
void publish(ExecutionLogInterface log, bool filesOnly) { log.Log("Starting Web Site Publishing..."); _publicationInError = false; try { string publicationDirectory = _configuration.WebPublicationDirectory; string sourceDirectory = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), _configuration.WebNETCore ? "NETCore" : "Web.Net"); #if DEBUG sourceDirectory = Path.GetDirectoryName(Application.ExecutablePath) + @"\..\..\..\..\SealWebServer\"; if (_configuration.WebNETCore) { sourceDirectory = Path.GetDirectoryName(Application.ExecutablePath) + @"\..\..\..\..\..\Projects.NETCore\SealWebServer\bin\Release\netcoreapp3.1\publish\"; } #endif //Copy installation directory log.Log("Copying files from '{0}' to '{1}'", sourceDirectory, publicationDirectory); FileHelper.CopyDirectory(sourceDirectory, publicationDirectory, true); //Check config... var currentConfig = Path.Combine(publicationDirectory, _configuration.WebNETCore ? "appsettings.json" : "web.config"); var releaseConfig = Path.Combine(publicationDirectory, _configuration.WebNETCore ? "appsettings.Release.json" : "web.release.config"); if (!File.Exists(currentConfig) && File.Exists(releaseConfig)) { log.Log("Creating Config file from '{0}'", releaseConfig); //Replace repository path var configText = File.ReadAllText(releaseConfig); if (_configuration.WebNETCore) { configText = configText.Replace("\"RepositoryPath\": \"\",", string.Format("\"RepositoryPath\": \"{0}\",", _configuration.Repository.RepositoryPath.Replace("\\", "\\\\"))); } else { configText = configText.Replace(@"C:\ProgramData\Seal Report Repository", _configuration.Repository.RepositoryPath); } File.WriteAllText(currentConfig, configText); } if (!filesOnly && !log.IsJobCancelled()) { log.Log("Publishing Site on IIS..."); Microsoft.Web.Administration.ServerManager serverMgr = new Microsoft.Web.Administration.ServerManager(); Microsoft.Web.Administration.Site site = null; if (serverMgr.Sites.Count == 0) { log.Log("Creating Default Web Site"); site = serverMgr.Sites.Add("Default Web Site", "C:\\inetpub\\wwwroot", 80); } else { site = serverMgr.Sites[0]; } Microsoft.Web.Administration.ApplicationPool pool = serverMgr.ApplicationPools.FirstOrDefault(i => i.Name == _configuration.WebApplicationPoolName); if (pool == null) { log.Log("Creating Application Pool"); pool = serverMgr.ApplicationPools.Add(_configuration.WebApplicationPoolName); } pool.ManagedRuntimeVersion = _configuration.WebNETCore ? "" : "v4.0"; if (Marshal.SizeOf(typeof(IntPtr)) != 8) { pool.Enable32BitAppOnWin64 = true; //Test if 32bit } pool.ProcessModel.IdentityType = Microsoft.Web.Administration.ProcessModelIdentityType.LocalSystem; if (string.IsNullOrEmpty(_configuration.WebApplicationName)) { _configuration.WebApplicationName = "/"; } var application = site.Applications.FirstOrDefault(i => i.Path == _configuration.WebApplicationName); if (application == null) { log.Log("Creating Application"); application = site.Applications.Add(_configuration.WebApplicationName, _configuration.WebPublicationDirectory); } if (_configuration.WebApplicationName == "/") { Microsoft.Web.Administration.VirtualDirectory vDir = application.VirtualDirectories[0]; vDir.Path = _configuration.WebApplicationName; vDir.PhysicalPath = _configuration.WebPublicationDirectory; } application.ApplicationPoolName = _configuration.WebApplicationPoolName; if (!log.IsJobCancelled()) { serverMgr.CommitChanges(); } log.Log("Web Site has been published successfully."); } } catch (Exception ex) { _publicationInError = true; log.Log("\r\n[UNEXPECTED ERROR RECEIVED]\r\n{0}\r\n", ex.Message); if (ex.InnerException != null) { log.Log("{0}\r\n", ex.InnerException.Message); } } log.Log("Web Site Publishing terminated."); if (log.IsJobCancelled()) { log.Log("Publication has been cancelled."); } }