Ejemplo n.º 1
0
        internal static Uri GetFailBackUrl(EcpService ecpService)
        {
            Uri uri = null;

            if (VirtualDirectoryConfiguration.failbackUrlCache.TryGetValue(ecpService.MetabasePath, out uri))
            {
                return(uri);
            }
            string webSiteRoot = IisUtility.GetWebSiteRoot(ecpService.MetabasePath);

            foreach (ADOwaVirtualDirectory adowaVirtualDirectory in VirtualDirectoryConfiguration.FindVirtualDirectoriesForServer <ADOwaVirtualDirectory>(ecpService.ServerFullyQualifiedDomainName))
            {
                if (webSiteRoot.Equals(IisUtility.GetWebSiteRoot(adowaVirtualDirectory.MetabasePath), StringComparison.OrdinalIgnoreCase) && adowaVirtualDirectory.FailbackUrl != null)
                {
                    uri = new UriBuilder(adowaVirtualDirectory.FailbackUrl)
                    {
                        Path  = ecpService.Url.AbsolutePath,
                        Query = ecpService.Url.Query
                    }.Uri;
                }
            }
            VirtualDirectoryConfiguration.failbackUrlCache[ecpService.MetabasePath] = uri;
            return(uri);
        }