デフォルトの MvcHandler にいくつかの機能を追加しようとしています。何が起こっているか: Pascal Case の URL の代わりに破線の URL を使用したかったのです。つまり、コントローラーが SomeController の場合、URL を /SomeController ではなく /some-controller にしたかったのです。
私の最善の回避策は次のとおりです。各コントローラーを目的の各 URL にマップする 1 つのマッピング ファイル URLMappings.xml を作成しました。次に、デフォルトの Route クラスを拡張して、これに基づいて発信 URL を生成し、デフォルトの RouteHandler を拡張して、これに基づいて URL を理解しました。マッピングが作成されていなくても、フレームワークはデフォルトの動作を使用するため、これは問題なく機能します。
私のポイントは: これにより、ルーティング システムは両方の種類の URL を理解していたため、重複コンテンツの SEO 問題が発生しました。次に、次のことを実装したいと思いました。
- コントローラーの値を取得する
- いくつかのマッピングでコントローラー名が値と一致するかどうかを確認します
- 一致する場合は、入力された URL よりも適切な URL があり、404 が返されます。
私は Web で検索しましたが、これを行う唯一の方法は、新しい IHttpHandler を作成することでした。ただし、すべての MVC 機能が必要なので、ゼロから作成する必要はありません。このロジックを ProcessRequest に配置したいだけですが、メソッドのオーバーライドされたバージョンは実行されていません。
誰かがこれに対処する方法を教えてもらえますか? 質問がばかげている場合、または詳細が不十分である場合は申し訳ありません。さらに情報が必要な場合は、教えてください。