ASP.NET:ジェネリックハンドラーからファイルの仮想パスを取得する方法は?
-
28-10-2019 - |
質問
ジェネリック.ASHXハンドラー内から、ブラウザに適したファイルへの仮想パスをパスに解決するにはどうすればよいですか?
たとえば、変換したい:
~/asp/ClockState.aspx
の中へ
/NextAllowed/asp/ClockState.aspx
私がウェブフォームだったら Page
, 、電話することができます ResolveUrl
:
Page.ResolveUrl("~/asp/ClockState.aspx")
これは次のとおりです。
/NextAllowed/asp/ClockState.aspx
しかし、私はウェブフォームページではなく、一般的なハンドラーです。あなたは知っています、それ IHttpHandler
注入されたあらゆる種類のオブジェクト:
public class ResetClock : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
//[process stuff]
//Redirect client
context.Response.Redirect("~/asp/ClockState.aspx", true);
}
public bool IsReusable { get { return false; } }
}
解決
VirtualPathutilityクラスを使用してこれを行うことができます。これには、パスを操作するためのさまざまな方法が含まれています。必要なものはtoabsolute()です。これは、相対パスを絶対的なパスに変換します。
var path = VirtualPathUtility.ToAbsolute("~/asp/ClockState.aspx");
ただし、とにかくreponse.redirect呼び出しでTildeを使用できます。そのため、以下はまだ機能します。
Response.Redirect("~/asp/ClockState.aspx");
respons.redirectを使用する前に、URLを絶対パスに変換する必要はありません。
所属していません StackOverflow