私はページオブジェクトからページのURLを特定するために探しています。現在のコンテキストのパスしか取得できないようです。別のページからコードビハインドでASP.NetページのURLを取得
答えて
ページには複数のURLを含めることができます。たとえば、私は自宅でサーバーを稼働させており、サイトのURLはどこからチェックするかによって異なります。私が家にいたときには、トラフィックが私のホームネットワークを離れないように内部サーバー名を使用するだけです。私が他の場所にいるときは、dyndns.orgベースのURLを使用する必要があります。また、同じ場所を指すように複数の異なるサイトを構成することもできます。要点は、この情報がページのクラスの種類、または特定のインスタンスに関連付けられていないことです。
そのため、ページのURLはリクエストごとに決定することができ、かつ十分なあなたがうまくいけば、これらのいずれかがお手伝いしますRequest.Url
を見て、それを得ることができることを確認。
Understanding Paths in ASP.NET
式 - 評価
this.TemplateSourceDirectory -/InformITに/サブディレクトリ
Request.MapPath( "log.txtという") - C:\ mywebdirs \ InformITに\ SUBDIR \ログインします。 TXT
this.MapPathSecure( "log.txtという") - C:\ mywebdirs \ InformITに\ SUBDIR \ log.txtという
Request.Path -/InformITに/ subdi R/pathsample.aspx /エクストラ
Request.FilePath - /informit/subdir/pathsample.aspx
Request.CurrentExecutionFilePath - /informit/subdir/pathsample.aspx
Request.PathInfo -
/エクストラRequest.PhysicalPath - C:\ mywebdirs \ InformITに\ SUBDIR \ pathsample.aspx
Request.PhysicalApplicationPath - C:\ mywebdirs \ InformITに
\Request.ApplicationPath -/InformITに
Request.Url - http://localhost/informit/subdir/client.aspx/extra
Request.RawUrl - /informit/subdir/pathsample.aspx/extra
Response.ApplyAppPathModifier( "foo.aspx") -/InformITに/ SUBDIR/foo.aspx
this.ResolveUrl( "〜/ client.aspx") - /informit/pathsample.aspx
それは
経由で利用可能であるべきです string currentUrl = Page.Request.Url.ToString();
あなたが求めているページは、あなたが次のようなものを使用することができ、現在のページと同じディレクトリ、またはそのサブディレクトリにある場合には(必要に応じて、文字列にサブディレクトリのページを追加):
string targetUrl = HttpContext.Current.Request.Url.Scheme
+ "://"
+ HttpContext.Current.Request.Url.Authority
+ this.TemplateSourceDirectory + "/Page.aspx";
リクエストごとの問題は私の問題です。私はいつも文脈でそれを得ることができますが、私はちょうど(ウェブのための)または物理的に(ディスク上の)スクリプトのパスを取得したいと思います。私は実際にはディレクトリとスクリプトの場所だけを完全なURLにする必要はありません –
私のアドバイスは、必要な機能のパラメータとしてそのパスを追加し、どのように呼び出すかを変更することです。 –
うーん...私はそれを取り戻す。要求ごとではなくセッションごとに行われます。しかし、関連するロジック(および提案されたソリューション)は依然として適用されます。 –