3

以下のコードを確認した後Context.RewritePath、クエリ文字列なしで呼び出されているにもかかわらず、への呼び出しが何らかの理由でクエリ文字列を失っていないことに気付きました。クエリ文字列が維持されている理由を説明するドキュメントはありますか?

//URL relative path to ashx files is wrong to to path rewriting.
if (Request.Url.LocalPath.EndsWith(".ashx")) {
    Context.RewritePath(Request.Url.LocalPath
        .Substring(Request.Url.LocalPath.LastIndexOf("/") + 1));
}

編集:これを修正する方法を尋ねているわけではありません。コードは正しく動作します。この動作のドキュメントを求めているだけです。

4

1 に答える 1

0

基本的にパスの書き換えを行っているため、ほとんどの場合、新しいパスに渡すためにクエリを維持する必要があります。

古い「getDocument.aspx」ではなく、「getDocumentWithEnhancements.aspx」という名前の新しいドキュメント取得ページを例にとります。どちらも有用なパラメーターが必要ですが、新しいパラメーターを使用する必要があります。RewritePath は、古いものに渡されたクエリを受け取り、新しいものに渡すため、仕事をします。何らかのエラー ページなどを表示したい場合は、代わりにリダイレクトを使用するか、書き換え先のページがクエリ文字列を無視するようにします。

クエリを通過させたくないのはなぜですか? これを正確に何に使用していますか?たぶん、それはあなたが必要とするものに適した機能ではありません.

編集: 3 つのパラメーターを使用するオーバーロードされた関数があります。そのうちの 1 つはクエリ文字列であり、クエリ文字列を使用しないように null として渡すことができます。

于 2013-02-06T21:47:52.153 に答える