Exemplo n.º 1
0
        static string ParseUrl(string value, Uri url)
        {
            string EndVal = "";

            try
            {
                if (value.Contains("?") || value.Contains("<") || value.Contains(">") || value.Contains(":") || value.Contains(";"))
                {
                    EndVal = "";
                }
                else if (value.Substring(0, 1) == "/" && value.Substring(0, 2) != "//")
                {
                    EndVal = url.Scheme + "://" + url.Host + Path.GetDirectoryName(url.AbsolutePath) + value;
                }
                else if (value.Substring(0, 2) == "//")
                {
                    EndVal = url.Scheme + ":" + value + Path.GetDirectoryName(url.AbsolutePath);
                }
                else if (value.Substring(0, 1) == "#" || value.Contains("#"))
                {
                    EndVal = "";
                }
                //else if (value.Substring(0, 11) == "javascript:")
                //{
                //    EndVal = "";
                //}
                //else if (value.Substring(0, 7) == "mailto:")
                //{
                //    EndVal = "";
                //}
                //else if (value.Substring(0, 4) == "tel:")
                //{
                //    EndVal = "";
                //}
                else if (value.Substring(0, 6) == "../../")
                {
                    value  = value.Substring(6);
                    EndVal = url.Scheme + "://" + url.Host + Path.GetFullPath(Path.Combine(url.AbsolutePath, @"..\..\..\")).Substring(2) + value;
                }
                else if (value.Substring(0, 2) == "./")
                {
                    value  = value.Substring(1);
                    EndVal = url.Scheme + "://" + url.Host + Path.GetDirectoryName(url.AbsolutePath) + value;
                }
                else if (value.Substring(0, 3) == "../")
                {
                    value  = value.Substring(3);
                    EndVal = url.Scheme + "://" + url.Host + Path.GetFullPath(Path.Combine(url.AbsolutePath, @"..\..\")).Substring(2) + value;
                }
                else if (value.Substring(0, 5) != "https" && value.Substring(0, 4) != "http")
                {
                    EndVal = url.Scheme + "://" + url.Host + Path.GetDirectoryName(url.AbsolutePath) + "/" + value;
                }
                else
                {
                    EndVal = value;
                }
            }
            catch (ArgumentOutOfRangeException ex) { Errors.Add(ex.Message); }
            EndVal = EndVal.Replace("\\", "/");
            return(EndVal);
        }