public void RemoveApplication(string siteName, int appIndex)
        {
            try
            {
                using (ServerManager serverManager = GetServerManager())
                {
                    TestUtility.LogTrace(String.Format("#################### Deleting App {0} from Site {1} ####################", appIndex, siteName));

                    serverManager.Sites[siteName].Applications.RemoveAt(appIndex);

                    serverManager.CommitChanges();
                }
            }
            catch (Exception ex)
            {
                TestUtility.LogInformation(String.Format("#################### Deleting App {0} from Site {1} failed. Reason: {2} ####################", appIndex, siteName, ex.Message));
            }
        }
        public void ChangeApplicationPath(string siteName, int appIndex, string path)
        {
            try
            {
                using (ServerManager serverManager = GetServerManager())
                {
                    TestUtility.LogTrace(String.Format("#################### Changing Path for App {0} of Site {1} to {2} ####################", appIndex, siteName, path));

                    serverManager.Sites[siteName].Applications[appIndex].SetAttributeValue("path", path);

                    serverManager.CommitChanges();
                }
            }
            catch (Exception ex)
            {
                TestUtility.LogInformation(String.Format("#################### Changing Path for App {0} of Site {1} to {2} failed. Reason: {3} ####################", appIndex, siteName, path, ex.Message));
            }
        }
        public void SetMaxProcessesForAppPool(string appPoolName, int maxProcesses)
        {
            TestUtility.LogTrace(String.Format("#################### Setting maxProcesses to {0} for AppPool {1} ####################", maxProcesses, appPoolName));
            try
            {
                using (ServerManager serverManager = GetServerManager())
                {
                    ApplicationPoolCollection appPools = serverManager.ApplicationPools;
                    appPools[appPoolName].ProcessModel.MaxProcesses = maxProcesses;

                    serverManager.CommitChanges();
                }
            }
            catch (Exception ex)
            {
                TestUtility.LogInformation(String.Format("#################### Setting maxProcesses to {0} for AppPool {1} failed. Reason: {2} ####################", maxProcesses, appPoolName, ex.Message));
            }
        }
        public void SetIdleTimeoutForAppPool(string appPoolName, int idleTimeoutMinutes)
        {
            TestUtility.LogTrace(String.Format("#################### Setting idleTimeout to {0} minutes for AppPool {1} ####################", idleTimeoutMinutes, appPoolName));
            try
            {
                using (ServerManager serverManager = GetServerManager())
                {
                    ApplicationPoolCollection appPools = serverManager.ApplicationPools;
                    appPools[appPoolName].ProcessModel.IdleTimeout = TimeSpan.FromMinutes(idleTimeoutMinutes);

                    serverManager.CommitChanges();
                }
            }
            catch (Exception ex)
            {
                TestUtility.LogInformation(String.Format("#################### Setting idleTimeout to {0} minutes for AppPool {1} failed. Reason: {2} ####################", idleTimeoutMinutes, appPoolName, ex.Message));
            }
        }
Exemplo n.º 5
0
    private static void Main()
    {
        using (ServerManager serverManager = new ServerManager())
        {
            Configuration                  config = serverManager.GetApplicationHostConfiguration();
            ConfigurationSection           httpCompressionSection    = config.GetSection("system.webServer/httpCompression");
            ConfigurationElementCollection httpCompressionCollection = httpCompressionSection.GetCollection();

            ConfigurationElement schemeElement = httpCompressionCollection.CreateElement("scheme");
            schemeElement["name"] = @"deflate";
            schemeElement["doStaticCompression"]  = true;
            schemeElement["doDynamicCompression"] = true;
            schemeElement["dll"] = @"%Windir%\system32\inetsrv\gzip.dll";
            httpCompressionCollection.Add(schemeElement);

            serverManager.CommitChanges();
        }
    }
Exemplo n.º 6
0
        /// <summary>
        /// Removes the HTTPS Binding from the specified IIS Site
        /// </summary>
        /// <param name="siteName"></param>
        private static String RemoveHTTPSBindingFromIISSite(string siteName)
        {
            String        existingOneInfo = null;
            ServerManager serverMgr       = new ServerManager();
            Site          site            = serverMgr.Sites[siteName];

            for (int i = 0; i < site.Bindings.Count; i++)
            {
                if (site.Bindings[i].Protocol.Equals("https"))
                {
                    existingOneInfo = site.Bindings[i].BindingInformation;
                    site.Bindings.RemoveAt(i);
                    break;
                }
            }
            serverMgr.CommitChanges();
            return(existingOneInfo);
        }
 public bool CreateVirtualDirectoryV2
     (string domainName, string appName, string path)
 {
     using (ServerManager mgr = new ServerManager())
     {
         try
         {
             mgr.Sites[domainName].Applications.Add("/" + appName, path);
             mgr.Sites[domainName].Applications["/" + appName].ApplicationPoolName = appName;
             mgr.CommitChanges();
             return(true);
         }
         catch (Exception ex)
         {
             return(false);
         }
     }
 }
Exemplo n.º 8
0
        /// <summary>
        /// Removes the specified UI Module by name
        /// </summary>
        public static void RemoveUIModuleProvider(string name)
        {
            using (ServerManager mgr = new ServerManager())
            {
                Configuration adminConfig = mgr.GetAdministrationConfiguration();

                // now remove the ModuleProvider
                ConfigurationSection           moduleProvidersSection = adminConfig.GetSection("moduleProviders");
                ConfigurationElementCollection moduleProviders        = moduleProvidersSection.GetCollection();
                ConfigurationElement           moduleProvider         = FindByAttribute(moduleProviders, "name", name);
                if (moduleProvider != null)
                {
                    moduleProviders.Remove(moduleProvider);
                }

                mgr.CommitChanges();
            }
        }
Exemplo n.º 9
0
        public static void ActivateAppInitialisationModuleForAllSites()
        {
            // https://github.com/sandrinodimattia/WindowsAzure-IISApplicationInitializationModule
            using (var serverManager = new ServerManager())
            {
                foreach (var application in serverManager.Sites.SelectMany(site => site.Applications))
                {
                    application["preloadEnabled"] = true;
                }

                foreach (var appPool in serverManager.ApplicationPools)
                {
                    appPool["startMode"] = "AlwaysRunning";
                }

                serverManager.CommitChanges();
            }
        }
Exemplo n.º 10
0
 /// <summary>
 /// 给站点设置应用程序池
 /// </summary>
 /// <param name="siteName">站点名称</param>
 /// <param name="applicationPoolName">应用名称</param>
 public static void SetSiteApplicationPool(string siteName, string applicationPoolName, string adminUserName = "", string adminPassword = "")
 {
     using (ServerManager serverManager = new ServerManager())
     {
         var site = GetSite(serverManager, siteName);
         if (site != null)
         {
             site.ApplicationDefaults.ApplicationPoolName = applicationPoolName;
             if (!string.IsNullOrEmpty(adminUserName) && !string.IsNullOrEmpty(adminPassword))
             {
                 var virtualDic = site.Applications[0].VirtualDirectories[0];
                 virtualDic.UserName = adminUserName;
                 virtualDic.Password = adminPassword;
             }
         }
         serverManager.CommitChanges();
     }
 }
Exemplo n.º 11
0
        public static void DeleteWebFarm(string name)
        {
            using (var serverManager = new ServerManager())
            {
                Configuration config = serverManager.GetApplicationHostConfiguration();

                ConfigurationSection           section = config.GetSection("webFarms");
                ConfigurationElementCollection farms   = section.GetCollection();

                ConfigurationElement farm = farms.FirstOrDefault(f => f.GetAttributeValue("name").ToString() == name);

                if (farm != null)
                {
                    farms.Remove(farm);
                    serverManager.CommitChanges();
                }
            }
        }
Exemplo n.º 12
0
    private static void Main()
    {
        using (ServerManager serverManager = new ServerManager())
        {
            Configuration                  config = serverManager.GetApplicationHostConfiguration();
            ConfigurationSection           isapiFiltersSection    = config.GetSection("system.webServer/isapiFilters");
            ConfigurationElementCollection isapiFiltersCollection = isapiFiltersSection.GetCollection();

            ConfigurationElement filterElement = isapiFiltersCollection.CreateElement("filter");
            filterElement["name"]        = @"SalesQueryIsapi";
            filterElement["path"]        = @"c:\Inetpub\www.contoso.com\filters\SalesQueryIsapi.dll";
            filterElement["enabled"]     = true;
            filterElement["enableCache"] = true;
            isapiFiltersCollection.Add(filterElement);

            serverManager.CommitChanges();
        }
    }
Exemplo n.º 13
0
        internal static void UpdateIIS7SiteBindings(string siteId, ServerBinding[] bindings)
        {
            ServerManager serverManager = new ServerManager();
            Site          webSite       = serverManager.Sites[siteId];


            // cleanup all bindings
            webSite.Bindings.Clear();
            //
            foreach (ServerBinding binding in bindings)
            {
                //
                webSite.Bindings.Add(binding.IP + ":" + binding.Port + ":" + binding.Host,
                                     Uri.UriSchemeHttp);
            }
            //
            serverManager.CommitChanges();
        }
Exemplo n.º 14
0
        public override string Execute(IHoconElement param)
        {
            string poolName = param.GetString();

            using (ServerManager serverManager = new ServerManager())
            {
                var pools = serverManager.ApplicationPools;

                var pool = pools[poolName];
                if (pool == null)
                {
                    return($"pool {poolName} not exist! can not delete");
                }
                pools.Remove(pool);
                serverManager.CommitChanges();
            }
            return($"pool {poolName} delete success!");
        }
Exemplo n.º 15
0
        /// <summary>
        /// Updates application pool
        /// </summary>
        /// <param name="name"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        internal static void UpdateIIS7ApplicationPool(string name, string username, string password)
        {
            ServerManager   serverManager = new ServerManager();
            ApplicationPool pool          = serverManager.ApplicationPools[name];

            if (!String.IsNullOrEmpty(username))
            {
                pool.ProcessModel.IdentityType    = ProcessModelIdentityType.SpecificUser;
                pool.ProcessModel.UserName        = username;
                pool.ProcessModel.Password        = password;
                pool.ProcessModel.LoadUserProfile = true;
            }
            else
            {
                pool.ProcessModel.IdentityType = ProcessModelIdentityType.NetworkService;
            }
            serverManager.CommitChanges();
        }
Exemplo n.º 16
0
    private static void Main()
    {
        using (ServerManager serverManager = new ServerManager()) {
            Configuration config = serverManager.GetApplicationHostConfiguration();

            ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");

            ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();

            ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
            addElement["name"]                = @"Contoso";
            addElement["autoStart"]           = true;
            addElement["managedPipelineMode"] = @"Integrated";
            applicationPoolsCollection.Add(addElement);

            serverManager.CommitChanges();
        }
    }
Exemplo n.º 17
0
        private static void EnsureDefaultDocument(ServerManager iis)
        {
            IIS.Configuration        applicationHostConfiguration = iis.GetApplicationHostConfiguration();
            IIS.ConfigurationSection defaultDocumentSection       = applicationHostConfiguration.GetSection("system.webServer/defaultDocument");

            IIS.ConfigurationElementCollection filesCollection = defaultDocumentSection.GetCollection("files");

            if (filesCollection.Any(ConfigurationElementContainsHostingStart))
            {
                return;
            }

            IIS.ConfigurationElement addElement = filesCollection.CreateElement("add");
            addElement["value"] = HostingStartHtml;
            filesCollection.Add(addElement);

            iis.CommitChanges();
        }
Exemplo n.º 18
0
        public override void Run()
        {
            using (var serverManager = new ServerManager())
            {
                var mainSite = serverManager.Sites[RoleEnvironment.CurrentRoleInstance.Id + "_Web"];
                if (mainSite != null)
                {
                    var mainApplication     = mainSite.Applications["/"];
                    var mainApplicationPool = serverManager.ApplicationPools[mainApplication.ApplicationPoolName];
                    mainApplicationPool["autoStart"] = true;
                    mainApplicationPool["startMode"] = "AlwaysRunning";

                    serverManager.CommitChanges();
                }
            }

            base.Run();
        }
Exemplo n.º 19
0
 /// <summary>
 /// 创建站点
 /// </summary>
 /// <param name="siteName">站点名称</param>
 /// <param name="path">站点路径</param>
 /// <param name="port">端口</param>
 /// <param name="host">主机</param>
 /// <param name="adminPassword"></param>
 /// <param name="requestType">请求类型:http或者https</param>
 /// <param name="adminUserName"></param>
 public static void CreateSite(string siteName, string path, string port = "8000", string host = "*", string adminUserName = "", string adminPassword = "", string requestType = "http")
 {
     using (ServerManager serverManager = new ServerManager())
     {
         var sites = serverManager.Sites;
         if (sites[siteName] == null)
         {
             var site = sites.Add(siteName, requestType, $"{host}:{port}:", path);
             if (!string.IsNullOrEmpty(adminUserName) && !string.IsNullOrEmpty(adminPassword))
             {
                 var virtualDic = site.Applications[0].VirtualDirectories[0];
                 virtualDic.UserName = adminUserName;
                 virtualDic.Password = adminPassword;
             }
             serverManager.CommitChanges();
         }
     }
 }
 public bool DeleteVirtualDirectoryV2
     (string domainName, string appName)
 {
     try
     {
         using (ServerManager mgr = new ServerManager())
         {
             Application app = mgr.Sites[domainName].Applications["/" + appName];
             mgr.Sites[domainName].Applications.Remove(app);
             mgr.CommitChanges();
             return(true);
         }
     }
     catch (Exception ex)
     {
         return(false);
     }
 }
Exemplo n.º 21
0
        /// <summary>
        /// Clean up the iis
        /// </summary>
        /// <param name="options">
        /// </param>
        public static void CleanupIIS(WebAppSetupOptions options)
        {
            using (ServerManager manager = new ServerManager())
            {
                Site site = manager.Sites[DefaultWebSiteName];

                Application app = site.Applications.Where((x, i) => x.Path == "/" + options.VirtualDirectory).FirstOrDefault();

                if (app != null)
                {
                    site.Applications.Remove(app);
                    manager.CommitChanges();
                }

                // TODO: Currently disabled for debugging purposes
                // RemoveDirectory(Path.Combine(options.IISRoot, options.vdirName));
            }
        }
Exemplo n.º 22
0
        public void InstallCertificateforBinding(Site site, X509Certificate2 certificate, string host, int sslPort = 443, bool useSNI = true)
        {
            var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

            store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
            using (var iisManager = new ServerManager())
            {
                var siteToUpdate = iisManager.Sites.FirstOrDefault(s => s.Id == site.Id);
                if (siteToUpdate != null)
                {
                    string internationalHost = _idnMapping.GetUnicode(host);
                    var    existingBinding   = (from b in siteToUpdate.Bindings where b.Host == internationalHost && b.Protocol == "https" select b).FirstOrDefault();

                    if (existingBinding != null)
                    {
                        // Update existing https Binding
                        existingBinding.CertificateHash      = certificate.GetCertHash();
                        existingBinding.CertificateStoreName = store.Name;
                    }
                    else
                    {
                        //add new https binding at default port
                        var iisBinding = siteToUpdate.Bindings.Add(":" + sslPort + ":" + internationalHost, certificate.GetCertHash(), store.Name);

                        iisBinding.Protocol = "https";
                        if (useSNI)
                        {
                            try
                            {
                                iisBinding["sslFlags"] = 1; //enable sni
                            }
                            catch (Exception)
                            {
                                ;;
                                System.Diagnostics.Debug.WriteLine("Cannot apply SNI SSL Flag");
                            }
                        }
                    }
                }

                iisManager.CommitChanges();
                store.Close();
            }
        }
Exemplo n.º 23
0
        public string SetAppPool(string appPool, string app, string site)
        {
            ServerManager   serverManager = new ServerManager();
            ApplicationPool resultpool    = null;

            foreach (ApplicationPool pool in serverManager.ApplicationPools)
            {
                if (pool.Name.ToString() == appPool)
                {
                    resultpool = pool;
                }
            }

            foreach (Site insite in serverManager.Sites)
            {
                if (insite.Name.ToString() == site)
                {
                    //insite.Stop();
                    foreach (var item in insite.Applications)
                    {
                        if (item.Path.Substring(1) == app)
                        {
                            item.ApplicationPoolName = resultpool.Name;
                        }
                    }
                    serverManager.CommitChanges();
                    //insite.Start();
                    resultpool.Recycle();
                }
            }

            //foreach (Site mainsite in serverManager.Sites)
            //{
            //    foreach (var item in mainsite.Applications)
            //    {
            //        if (item.Path.Substring(1) == app)
            //        {
            //            item.ApplicationPoolName = resultpool.Name;
            //        }
            //    }
            //}

            return("OK");
        }
Exemplo n.º 24
0
        /// <summary>
        /// Creates site.
        /// </summary>
        /// <param name="site">Site object.</param>
        /// <returns>Site id.</returns>
        internal static string CreateIIS7Site(WebSiteItem site)
        {
            ServerManager serverManager = new ServerManager();
            Site          webSite       = serverManager.Sites[site.Name];

            if (webSite == null)
            {
                webSite = serverManager.Sites.Add(site.Name, site.ContentPath, 80);
            }

            // cleanup all bindings
            webSite.Bindings.Clear();
            //
            foreach (ServerBinding binding in site.Bindings)
            {
                //
                webSite.Bindings.Add(binding.IP + ":" + binding.Port + ":" + binding.Host,
                                     Uri.UriSchemeHttp);
            }
            //
            webSite.Applications[0].ApplicationPoolName = site.ApplicationPool;
            //
            //webSite.LogFile.Directory = site.LogFileDirectory;
            //
            site.SiteId = webSite.Name;
            //
            webSite.ServerAutoStart = true;
            //authentication
            Configuration        cnfg    = serverManager.GetApplicationHostConfiguration();
            ConfigurationSection section = cnfg.GetSection("system.webServer/security/authentication/anonymousAuthentication", site.Name);

            section["enabled"]  = site.AuthAnonymous;
            section["userName"] = string.Empty;
            section["password"] = string.Empty;


            section            = cnfg.GetSection("system.webServer/security/authentication/windowsAuthentication", site.Name);
            section["enabled"] = site.AuthWindows;

            //TODO: default documents
            serverManager.CommitChanges();

            return(site.SiteId);
        }
        private void Install_IIS()
        {
            string siteName     = "TqDashboard";
            string poolName     = "TqDashboardPool";
            string physicalPath = DashboardPath;

            using (var iis = new ServerManager())
            {
                Site site = iis.Sites[siteName];
                if (site == null)
                {
                    site = iis.Sites.Add(siteName, physicalPath, 0);
                    site.Bindings.Clear();
                }
                else
                {
                    return;
                }
                site.Name = siteName;

                site.ApplicationDefaults.ApplicationPoolName = poolName;

                ApplicationPool pool = iis.ApplicationPools[poolName];
                if (pool == null)
                {
                    pool = iis.ApplicationPools.Add(poolName);
                }

                pool.Name = poolName;
                pool.Enable32BitAppOnWin64        = false;
                pool.ManagedRuntimeVersion        = "v4.0";
                pool.ManagedPipelineMode          = ManagedPipelineMode.Integrated;
                pool.Failure.OrphanWorkerProcess  = false;
                pool.ProcessModel.MaxProcesses    = 1;
                pool.ProcessModel.LoadUserProfile = true;
                pool.ProcessModel.IdentityType    = ProcessModelIdentityType.LocalSystem;

                // set binginds
                site.Bindings.Clear();
                site.Bindings.Add("*:80:local.ccnet", "http");

                iis.CommitChanges();
            }
        }
Exemplo n.º 26
0
        /// <summary>
        /// Configures the binding information for the specified site name.
        /// </summary>
        /// <param name="siteName">The name of the IIS site to configure.</param>
        /// <param name="ipAddress">The IP address associated with this binding or null for all available.</param>
        /// <param name="port">The port number, usually 443.</param>
        /// <param name="hostname">The hostname associated with this binding or null for all available.</param>
        /// <param name="certificateHash">The SHA-1 hash of the certificate.</param>
        /// <param name="createBinding">True if a new binding should be created if it doesn't already exist.</param>
        /// <returns>true if the binding was created/updated, false if not.</returns>
        static public bool ConfigureBinding(BindingData bindingData, byte[] certificateHash, bool createBinding = true)
        {
            string bindingInformation = string.Format("{0}:{1}:{2}",
                                                      !string.IsNullOrWhiteSpace(bindingData.IPAddress) ? bindingData.IPAddress : "*",
                                                      bindingData.Port,
                                                      bindingData.Domain ?? string.Empty);

            //
            // This chunk of code will add a new HTTPS binding linked to the certificate.
            //
            var server = new ServerManager();
            var site   = server.Sites.Where(s => s.Name == bindingData.Site).FirstOrDefault();

            if (site == null)
            {
                return(false);
            }

            var binding = site.Bindings.AsQueryable().Where(b => b.BindingInformation == bindingInformation).FirstOrDefault();

            if (binding == null)
            {
                if (!createBinding)
                {
                    return(false);
                }

                binding = site.Bindings.Add(bindingInformation, certificateHash, Enum.GetName(typeof(StoreName), StoreName.My));
            }
            else
            {
                binding.CertificateHash      = certificateHash;
                binding.CertificateStoreName = Enum.GetName(typeof(StoreName), StoreName.My);
            }

            if (!string.IsNullOrWhiteSpace(binding.Host) && GetIISVersion().Major >= 8)
            {
                binding.SetAttributeValue("sslFlags", 1);
            }

            server.CommitChanges();

            return(true);
        }
Exemplo n.º 27
0
        /// <summary>
        /// 更改物理路径
        /// </summary>
        /// <returns></returns>
        public static string ChangePhysicalPath(string name, string sitename, string path)
        {
            try
            {
                if (string.IsNullOrEmpty(sitename))
                {
                    sitename = "/";
                }

                if (!sitename.StartsWith("/"))
                {
                    sitename = "/" + sitename;
                }

                if (IsDefaultWebSite(name))
                {
                    name = "Default Web Site";
                }

                ServerManager oMan     = new ServerManager();
                var           siteList = oMan.Sites.ToList();
                var           site     = siteList.Where(r => r.Name.ToLower().Equals(name.ToLower())).ToList();
                if (site.Count == 0)
                {
                    return("site can not found:" + name);
                }

                var target = site[0];

                var applicationRoot = target.Applications.FirstOrDefault(r => r.Path.ToLower().Equals(sitename.ToLower()));
                if (applicationRoot == null)
                {
                    return($"can not found {sitename} in {name}");
                }

                applicationRoot.VirtualDirectories[0].PhysicalPath = path;
                oMan.CommitChanges();
                return(string.Empty);
            }
            catch (Exception e)
            {
                return(e.Message);
            }
        }
Exemplo n.º 28
0
        private static Site CreateSite(string siteName, string framework, string path, int port, ProcessModelIdentityType identityType)
        {
            var serverManager = new ServerManager();

            if (serverManager.ApplicationPools.Any(ap => ap.Name == siteName))
            {
                Debug("Removing existing AppPool {0}", siteName);
                serverManager.ApplicationPools.Remove(serverManager.ApplicationPools.Single(ap => ap.Name == siteName));
            }

            Debug("Creating new AppPool {0}, Framework={1}, IdentityType={2}", siteName, framework, identityType);

            var applicationPool = serverManager.ApplicationPools.Add(siteName);

            applicationPool.ManagedRuntimeVersion     = framework;
            applicationPool.Enable32BitAppOnWin64     = true;
            applicationPool.ProcessModel.IdentityType = identityType;
            applicationPool.ProcessModel.IdleTimeout  = new TimeSpan(7, 0, 0);


            /** Try to preserve the site so any external settings (such as log formats etc) are preserved */
            Site site;

            if (serverManager.Sites.Any(si => si.Name == siteName))
            {
                Debug("Found existing site {0}, updating port={1} and path={2}", siteName, port, path);
                site = serverManager.Sites.Single(si => si.Name == siteName);
                site.Bindings[0].BindingInformation = String.Format("*:{0}:*", port);
                site.Applications[0].VirtualDirectories["/"].PhysicalPath = path;
            }
            else
            {
                Debug("Creating new Site {0}, Path={1}, Port={2}", siteName, path, port);
                site = serverManager.Sites.Add(siteName, path, port);
            }

            site.ServerAutoStart = true;
            site.Applications[0].ApplicationPoolName = siteName;
            serverManager.CommitChanges();
            System.Threading.Thread.Sleep(500);
            Debug("Starting site");
            site.Start();
            return(site);
        }
Exemplo n.º 29
0
        public bool CreateInstance()
        {
            //Modifies the ApplicationHost.Config for IIS

            if (manager.Sites.Where(r => r.Name == App.ApplicationName).ToList().Count > 0)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"There already exists an application with the name {App.ApplicationName}...");
                Console.ResetColor();
                return(false);
            }
            try
            {
                //Adds the website to IIS
                Site webSite = manager.Sites.Add(App.ApplicationName, App.Path, App.Port);
                webSite.ServerAutoStart = true;

                manager.ApplicationPools.Add(App.ApplicationPool);
                manager.Sites[App.ApplicationName].Applications.First().ApplicationPoolName = App.ApplicationPool;
                ApplicationPool pool = manager.ApplicationPools[App.ApplicationPool];
                pool.ManagedRuntimeVersion = App.RuntimeVersion;
                if (App.PipelineMode.ToLower() == "classic")
                {
                    pool.ManagedPipelineMode = ManagedPipelineMode.Classic;
                }
                else
                {
                    pool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
                }
                if (App.VirtualDirectories.Count > 0)
                {
                    AddVirtualDirectories();
                }
                AssignPrivileges();
                manager.CommitChanges();
            }
            catch (Exception e)
            {
                ErrorHandler.WriteError(e);
                return(false);
            }

            return(true);
        }
Exemplo n.º 30
0
        public static bool AddHttpsBinding(X509Certificate2 cert, string port)
        {
            using (var mgr = new ServerManager())
            {
                var site = mgr.Sites[IISHelper.DefaultWebSiteName];
                foreach (var each in site.Bindings)
                {
                    if (each.BindingInformation == "*:" + port + ":")
                    {
                        return(true);
                    }
                }

                site.Bindings.Add("*:" + port + ":", cert.GetCertHash(), "MY");
                mgr.CommitChanges();
            }

            return(false);
        }