我想要使用波形符號('〜')開頭的典型asp.net url解析爲以「http:」開頭的完整URL:使用波形符號(〜)標記獲取URL的完整URL
我有這個字符串「〜/ PageB.aspx」
,我想使之成爲「http://myServer.com/PageB.aspx」
我知道有幾種方法來解析URL和獲得服務器和應用程序和這樣的不同的路徑。我嘗試了幾次,但沒有得到我想要的結果。
我想要使用波形符號('〜')開頭的典型asp.net url解析爲以「http:」開頭的完整URL:使用波形符號(〜)標記獲取URL的完整URL
我有這個字符串「〜/ PageB.aspx」
,我想使之成爲「http://myServer.com/PageB.aspx」
我知道有幾種方法來解析URL和獲得服務器和應用程序和這樣的不同的路徑。我嘗試了幾次,但沒有得到我想要的結果。
如果你在一個頁面處理器是你總是可以使用ResolveUrl
方法的相對路徑轉換爲服務器的特定路徑。但是,如果您想要「http : //www.yourserver.se」部分,則必須在其中添加Request.Url.Scheme
和Request.Url.Authority
。
試用
System.Web.VirtualPathUtility.ToAbsolute("yourRelativePath");
有跡象表明,在ASP.NET中,我們可以使用相對路徑解析到服務器端資源,並使其可在客戶端提供的各種方式。我知道的4種方式 -
1) Request.ApplicationPath
2) System.Web.VirtualPathUtility
3) Page.ResolveUrl
4) Page.ResolveClientUrl
string.Format("http://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl));
附加信息:如果您需要端口號,請使用它。 string.Format(「http:// {0} {1}」,Request.Url.Authority,Page.ResolveUrl(relativeUrl)) – user3035005 2013-12-18 17:31:10
這很有用,但是,我在Razor中使用了「Href()」,而不是Page.ResolveUrl()因爲它拋出一個空引用異常。 – neoscribe 2014-12-01 22:00:57
這種方法對我來說看起來最好。沒有字符串操作,它可以容忍兩個相對的或絕對的URL作爲輸入,並且它使用完全相同的方案,授權,端口和根路徑作爲當前請求是使用:
private Uri GetAbsoluteUri(string redirectUrl)
{
var redirectUri = new Uri(redirectUrl, UriKind.RelativeOrAbsolute);
if (!redirectUri.IsAbsoluteUri)
{
redirectUri = new Uri(new Uri(Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath), redirectUri);
}
return redirectUri;
}
如果你將上面的信息與這個混合,'System.Web.VirtualPathUtility.ToAbsolute(「yourRelativePath」); '來解析'〜/'路徑,然後在這個字符串的結果上使用這個方法。有用。 (假設不需要端口信息)這些組合爲我工作。 – DiamondDrake 2016-03-09 20:07:54
注意,HTTP:/ /refactoringaspnet.blogspot.com/2009/09/different-approaches-for-resolving-urls.html文章_claims_「如果URL中有查詢字符串參數,VirtualPathUtility將引發錯誤」,但我發現它甚至可以正確運行與查詢字符串。 – JonBrave 2017-08-23 12:01:23