private void resetPendingActions(Website website) { // Set a new arrays without all the deleted items. website.DnsZoneArray = website.DnsZoneArray.Where(z => z.PendingAction != ChildPendingAction.Delete).ToArray(); website.SecurityArray = website.SecurityArray.Where(r => r.PendingAction != ChildPendingAction.Delete).ToArray(); website.HostArray = website.HostArray.Where(h => !RhspData.IsDeleteOrDiscard(h)).ToArray(); // Then, mark the pending actions to none so duplicates arent created. website.DnsZoneArray.ToList().ForEach(z => z.ResetPendingActions()); website.SecurityArray.ToList().ForEach(r => r.PendingAction = ChildPendingAction.None); website.HostArray.ToList().ForEach(h => h.PendingAction = ChildPendingAction.None); // Refresh the editor controls with the removed data. websiteDnsZoneEditorControl1.RunReflectDataToForm(DataEditorMode.None); websiteSecurityEditorControl1.RunReflectDataToForm(DataEditorMode.None); websiteHostNameEditorControl1.RunReflectDataToForm(DataEditorMode.None); }
private void updateIisSite(Website website, Site site) { var aq = from a in site.Applications where a.Path == "/" select a; Application application; if (aq.Count() != 0) { application = aq.First(); applyApplicationValues(website, application); } else { application = site.Applications.CreateElement(); application.Path = "/"; applyApplicationValues(website, application); site.Applications.Add(application); } var vq = from v in application.VirtualDirectories where v.Path == "/" select v; VirtualDirectory virtualDirectory; if (vq.Count() != 0) { virtualDirectory = vq.First(); applyVirtualDirectoryValues(website, virtualDirectory); } else { virtualDirectory = application.VirtualDirectories.CreateElement(); virtualDirectory.Path = "/"; applyVirtualDirectoryValues(website, virtualDirectory); application.VirtualDirectories.Add(virtualDirectory); } site.Bindings.Clear(); foreach (WebsiteHost websiteHost in website.HostArray.Where(h => !RhspData.IsDeleteOrDiscard(h))) { Binding binding = site.Bindings.CreateElement(); binding.Protocol = websiteHost.GetIisProtocol(); binding.BindingInformation = websiteHost.GetBindingInformation(); site.Bindings.Add(binding); } try { iisManager.CommitChanges(); } catch (Exception ex) { throw new Exception("Unable to commit changes to IIS site.", ex); } website.IisSite.SiteID = site.Id; }