相关疑难解决方法(0)

从相对路径获取绝对URL(重构方法)

我真的很惊讶,没有本地.NET方法从相对URL获取绝对URL.我知道这已经讨论了很多次,但从来没有遇到过一个能很好地处理这个问题的令人满意的方法.你能帮助微调下面的方法吗?

我认为我需要的只是自动选择协议而不是硬编码(http/https).我还缺少什么(警告,表演等)?

public static string GetAbsoluteUrl(string url)
    {
        //VALIDATE INPUT FOR ALREADY ABSOLUTE URL
        if (url.StartsWith("http://", StringComparison.OrdinalIgnoreCase) 
           || url.StartsWith("https://", StringComparison.OrdinalIgnoreCase))
        { 
            return url;
        }

        //GET PAGE REFERENCE FOR CONTEXT PROCESSING
        Page page = HttpContext.Current.Handler as Page;

        //RESOLVE PATH FOR APPLICATION BEFORE PROCESSING
        if (url.StartsWith("~/"))
        {
            url = page.ResolveUrl(url);
        }

        //BUILD AND RETURN ABSOLUTE URL
        return "http://" + page.Request.ServerVariables["SERVER_NAME"] + "/" 
                         + url.TrimStart('/');
    }
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net .net-3.5

56
推荐指数
4
解决办法
11万
查看次数

标签 统计

.net ×1

.net-3.5 ×1

asp.net ×1

c# ×1