web-dev-qa-db-ja.com

現在のページのURLをC#で取得する方法

誰かがC#でASP.NETの現在の作業ページのURLを取得するのを手伝ってくれる?

607
apekshabs

これを試して :

string url = HttpContext.Current.Request.Url.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx

string path = HttpContext.Current.Request.Url.AbsolutePath;
// /TESTERS/Default6.aspx

string Host = HttpContext.Current.Request.Url.Host;
// localhost
851
Canavar

あなたは時々URLから異なる値を取得する必要があるかもしれません。

以下の例は、URLのさまざまな部分を抽出するさまざまな方法を示しています

例: (サンプルURL)

http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QueryString2=2

_ code _

Response.Write("<br/> " + HttpContext.Current.Request.Url.Host);
Response.Write("<br/> " + HttpContext.Current.Request.Url.Authority);
Response.Write("<br/> " + HttpContext.Current.Request.Url.Port);
Response.Write("<br/> " + HttpContext.Current.Request.Url.AbsolutePath);
Response.Write("<br/> " + HttpContext.Current.Request.ApplicationPath);
Response.Write("<br/> " + HttpContext.Current.Request.Url.AbsoluteUri);
Response.Write("<br/> " + HttpContext.Current.Request.Url.PathAndQuery);

_ output _

localhost
localhost:60527
60527
/WebSite1test/Default2.aspx
/WebSite1test
http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QueryString1=2
/WebSite1test/Default2.aspx?QueryString1=1&QueryString2=2

上記のサンプルコードをコピーして、異なるURLのasp.net Webフォームアプリケーションで実行することができます。

ASP Routingを使用する可能性がある場合は、ASP.Net Routingを読むこともお勧めします。そうすると、クエリ文字列で従来のURLを使用する必要がなくなります。

http://msdn.Microsoft.com/ja-jp/library/cc668201%28v=vs.100%29.aspx

445
Learning

Canavarの投稿に感謝します。

あなたがこのようなものを持っているならば:

"http://localhost:1234/Default.aspx?un=asdf&somethingelse=fdsa"

またはこのように:

"https://www.something.com/index.html?a=123&b=4567"

ユーザーが入力する部分だけが欲しいのであれば、これでうまくいきます。

String strPathAndQuery = HttpContext.Current.Request.Url.PathAndQuery;
String strUrl = HttpContext.Current.Request.Url.AbsoluteUri.Replace(strPathAndQuery, "/");

これは次のようになります。

"http://localhost:1234/"
"https://www.something.com/"
102
Soenhay

http://と最初のスラッシュの間の部分だけが必要な場合

string url = Request.Url.Host;

このページから呼び出されるとstackoverflow.comを返します。

これが 完全な内訳

45
roman m

request.rawurlは現在のページのコンテンツを提供し、それはあなたが要求した正確なパスを提供します

HttpContext.Current.Request.RawUrlを使う

19
Randhi Rupesh

取得したい場合

localhost:2806 

から

http://localhost:2806/Pages/ 

それから:

HttpContext.Current.Request.Url.Authority
14
Thomas

global.asaxファイルにpath/urlが必要な人へのアドバイス。

これを global.asax> Application_Start で実行する必要があり、アプリプールモードが integrated の場合、以下のエラーが表示されます。

Application_Startのこのコンテキスト例外では要求は使用できません。

その場合、これを使う必要があります:

System.Web.HttpRuntime.AppDomainAppVirtualPath

希望は他人を助けるでしょう..

12
dvdmn

このページに検索が入りましたが、探していたものではありませんでした。他の誰かがこのページで私が土地だったものを探している場合に備えてここに投稿してください。

文字列値しかない場合は、2つの方法があります。

.NETの方法:

@Canavarと同じですが、新しいUriオブジェクトをインスタンス化できます。

String URL = "http://localhost:1302/TESTERS/Default6.aspx";
System.Uri uri = new System.Uri(URL);

つまり、同じ方法を使うことができます。

string url = uri.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx

string Host = uri.Host
// localhost

正規表現の方法:

URLの一部を取得する(Regex)

9
Ben Pearson

絶対パスを返すのに十分だと思います。

 Path.GetFileName( Request.Url.AbsolutePath )

system.IOを使用します。

6
Mayank Pathak