2011-11-03 13 views
14

私は.net 4.0 C#で作業しています。仮想ディレクトリを含むURLの主要部分を取得

仮想ディレクトリを含め、現在の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/

それはどのようにこれを達成することは可能でしょうか?

答えて

29

は、これは、私はあなたが必要なものがすべて含まれている必要があり

HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath; 
+0

HttpContext.Current.Request.ApplicationPathはアプリケーションのルートでない場合、最初の例で/ shop /を返しません。 –

+1

良い点です。「店」は仮想ディレクトリではありません。私はそれがアマチュアの質問に基づいているという前提で行ったと思います。ですから、問題は素人がアプリケーションのルート(私のコードが提供するもの)への完全なパスか、完全なURLからファイル名を引いたものになります。 –

+0

質問をもう一度読んだので、彼らは仮想ディレクトリだけを言うので、あなたの答えは具体的に質問に合っています。 –

4

Request.Urlを使用しているものです。その時点で、それは文字列をチェックすることと、文字列を取得することを好むものです。私は以前AbsoluteUriを使ってきました。

この例では、プルーフを欺くされていませんが、あなたはここから必要なものを把握することができるはずです。

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

これは、このソリューションは、仕事ができる

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

を仕事と短い必要があります:

string url = (new Uri(Request.Url, ".")).OriginalString; 
関連する問題