私はすべてのWebプロジェクトで使用する汎用ライブラリを作成しています。機能の一つは、以下のように恒久的なリダイレクトです:相対パス( "〜")を現在のページを参照せずに解決しますか?
public static void PermanentRedirect(string url, HttpResponse response, bool endResponse)
{
url = //resolve url here. how?
response.Status = "301 Moved Permanently";
response.AddHeader("Location", url);
if (endResponse) response.End();
}
どのように私はPage.ResolveUrl
へのアクセスを取得するには、現在のページを渡すことなく、URLを解決することができますか?注:私はをに変更することができますが、私はそれがAPIに負担をかけると考えています。
私はこのように私の希望の使用のためのカップルのオーバーロードを持つがある:あなたがHttpContext.Handler
を経由して、現在のページのインスタンスを取得することができます
WebUtility.PermanentRedirect("~/somewhere/somepage.aspx")
その場合、* '〜'はどういう意味ですか? (2つの引数を持つURIコンストラクタが "期待どおりに"それを扱うと信じています。)それ以外の場合は取得できない場合は、HttpContextからページに直接アクセスできます。 –
'〜'は、Webアプリケーションルートにマップする通常のWebアプリケーションルート演算子です。 Uriのコンストラクタに関して、 '新しいUri(string uriString、bool dontEscape)'を参照していますか?これは減価償却され、私はもう一方が適用されるかどうかはわかりません。 – Jeff