1

次のコードを考えると、私の ASP.NET Web フォーム アプリで;

void foo(RouteCollection routes){
   routes.MapPageRoute(string.Empty, "testroute", "~/hello.aspx", false);
}

問題は、へのルートが hello.aspx へのルートでもあることhttp://localhost/testrouteですhello.aspxhttp://localhost/testroute/

これを防ぐ方法はありますか?

4

1 に答える 1

1

私の意見では、ここで行う最善のことは、Webサイトが<a>タグに一貫したURLを使用していることを確認することです。ルーティングメカニズムへの無関係なパスについて心配する必要はありませんが、代わりに、リンクに必要なURLパターンのみを使用するように集中してください。

たとえば、Webサイトに。が<a>付いたタグが含まれていないことを確認してくださいhref="/testroute/"。これに応答しても、問題はありません。

コメントで述べたように、URLのパス部分の末尾にあるスラッシュは効果がないのが実際には標準です。含めることも含めないこともできます。これは、2つの「異なる」URLが同じページをロードできることを意味します/page.aspx/page.aspx/両方とも同じものをロードします。しかし、ここには、デフォルトのドキュメントを使用した、同様のもう1つの長年の伝統もあります。つまり、同じものをロードする傾向があります//default.aspx

その場合の解決策は、もちろん、ここでの解決策と同じです。<a>タグが、使用するURLの一貫した単一バージョンを使用していることを確認してください。


記録のために、末尾のスラッシュを検出して301リダイレクトを発行する何かを行うことができますが、URLとの整合性を確認するだけの方がはるかに簡単だと思います。

于 2012-11-29T12:03:27.240 に答える