4

すべてHttpModuleのリクエストをインターセプトし、ルーティング ルールに基づいてデータベースからデータをロードする があります。ただし、常に 1 つの問題に遭遇します。GetRouteDataパスが存在しない場合にのみ機能します。

var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));

url に対するリクエストが届いたと仮定すると、http://localhost/contactそのパスがファイル システムに存在しない場合、その URL に関連する正しいルーティング データを取得します。パスに aspx ページを作成して、その URL でページをカスタマイズしたいときに問題が発生します~/contact/default.aspx。私がそれをしたら、GetRouteData戻ってnullください。

HttpContext新しいオブジェクトを作成しようとしましたが、ページが存在する場合でもルート データを取得できません。

誰もこの問題に遭遇したことがありますか? 解決策/回避策はありますか?

すべてのヘルプは大歓迎です。

4

1 に答える 1

3

真に設定RouteCollection.RouteExistingFilesします。

public static void RegisterRoutes(RouteCollection routes)
{
    // Cause paths to be routed even if they exists physically
    routes.RouteExistingFiles = true;

    // Map routes
    routes.MapPageRoute("...", "...", "...");
}

ただし注意してください。IIS7 は、Visual Studio 内でデバッグするときに使用されるサーバーとは少し異なる動作をします。アプリケーションを Web にデプロイしたときに、これに悩まされました。Microsoft Connection に送信したこのフィードバックを確認してください。

于 2011-05-01T23:54:16.810 に答える