private async Task RemovePotentialDuplicateBindingAsync(PortalHostingEnvironment environment, TWebsite tempWebsite, CrmWebsiteBinding newBinding)
        {
            // Wait for a random time span between 400ms and 800ms.
            var random       = new Random();
            var milliseconds = random.Next(400, 800);

            Thread.Sleep(milliseconds);

            // Query for the website bindings to see if a duplicate exists.
            var website = await this.ExpandWebsite(tempWebsite);

            var bindings = website.Bindings
                           .Where(binding => MatchSiteName(binding.SiteName, environment.SiteName) && MatchVirtualPath(binding.VirtualPath, environment.ApplicationVirtualPath))
                           .ToList();

            if (bindings.Count > 1)
            {
                // Remove the binding if it was created by this thread.
                if (tempWebsite.RemoveWebsiteBinding(newBinding))
                {
                    await this.Store.UpdateAsync(tempWebsite);

                    ADXTrace.Instance.TraceWarning(TraceCategory.Application, "Duplicate website binding detected and deleted.");
                }
            }
        }
        private static bool MatchDates(CrmWebsiteBinding binding)
        {
            var now = DateTime.UtcNow;

            return(binding.ReleaseDate.GetValueOrDefault(DateTime.MinValue) < now && binding.ExpirationDate.GetValueOrDefault(DateTime.MaxValue) > now);
        }