Request.URL for localhost和live site

时间:2013-01-24 20:12:29

标签: c# asp.net .net request

我有我的本地主持人和现场网站。我有一个网址,如果它在localhost中,网址应该是localhost / site / thank_you.aspx,如果它是活的http://mylivesite.com/thank_you.aspx

我在我的代码中尝试了这个......

MyHiddenField.Value = Request.URL + "/thank_you.aspx";

但它返回了我在/thank_you.aspx

上的页面

我做错了什么?

3 个答案:

答案 0 :(得分:8)

试试这个,我甚至也添加了方案,以防你去https:)

编辑:还添加了端口(感谢Alex)以便超级超级超级未来的证明:)

MyHiddenField.Value = string.Format(
    "{0}://{1}{2}/thank_you.aspx",  
    Request.Url.Scheme, 
    Request.Url.Host,
    Request.Url.IsDefaultPort ? string.Empty : ":" + Request.Url.Port);

编辑:@MikeSmithDev的另一个好建议,把它放在一个函数中

public string GetUrlForPage(string page)
{
    return MyHiddenField.Value = string.Format(
       "{0}://{1}{2}/{3}",  
        Request.Url.Scheme, 
        Request.Url.Host,
        Request.Url.IsDefaultPort ? string.Empty : ":" + Request.Url.Port,
        page);
}

然后你可以这样做:

MyHiddenField.Value = GetUrlForPage("thank_you.aspx");

答案 1 :(得分:2)

有一个内置课程UriBuilder

var url = Request.Url;
var newurl = new UriBuilder(url.Scheme, url.Host, url.Port, "thank_you.aspx")
                 .ToString();

答案 2 :(得分:0)

添加上面的答案。允许函数处理相对路径。例如:〜/或〜/ test / default.aspx

public string GetUrlForPage(string relativeUrl)
{
    return string.Format(
       "{0}://{1}{2}{3}",
        Request.Url.Scheme,
        Request.Url.Host,
        Request.Url.IsDefaultPort ? string.Empty : ":" + Request.Url.Port,
        Page.ResolveUrl(relativeUrl));
}