web-dev-qa-db-ja.com

仮想ディレクトリを含むURLの主要部分を取得します

私は.net4.0 c#で作業しています。

仮想ディレクトリを含め、現在のhttpリクエストからURLを取得できるようにしたい。したがって、たとえば(要求および求められる値):

http://www.website.com/shop/test.aspx -> http://www.website.com/shop/

http://www.website.com/test.aspx -> http://www.website.com/

http://website.com/test.aspx -> http://website.com/

どうすればこれを達成できますか?

15
amateur

これは私が使用するものです

HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath;
31
Marek Karbarz

Request.Urlには、必要なものがすべて含まれている必要があります。その時点で、文字列をチェックし、そこから何を取得したいかが問題になります。以前にAbsoluteUriを使用したことがありますが、機能します。

この例は絶対確実ではありませんが、これから必要なものを理解できるはずです。

string Uri = Request.Url.AbsoluteUri;
string Output = Uri.Substring(0, Uri.LastIndexOf('/') + 1 );
4
Doozer Blake

このソリューションは機能する可能性があり、より短いです。

string url = (new Uri(Request.Url, ".")).OriginalString;
1
Oscar

これはうまくいくはずです

Request.Url.OriginalString.Substring(0, Request.Url.OriginalString.LastIndexOf(Request.FilePath.Substring(Request.FilePath.LastIndexOf("/")))) + "/"