3

cache.manifest ファイルを自動的に生成したい。したがって、/OfflineSupport/Manifest からアクセスできるコントローラーとアクションを作成しました。すべて正常に動作します。コンテンツは正しく配信されます。

今度は、cache.manifest を呼び出すときにこのアクションを登録したいと思います。というわけで、新たなルートを追加しました。私の RegisterRoutes メソッドは次のようになります。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new {controller = "Home", action = "Index", id = UrlParameter.Optional}
    );

    routes.MapRoute("cache.manifest", "cache.manifest", new { controller = "OfflineSupport", action = "Manifest" });
}

私のサイトは localhost:7365/ で実行されています。localhost:7365/cache.manifest を呼び出すと、モジュール: IIS Web コア、メッセージ: MapRequestHandler、ハンドラー: StaticFile、エラーコード: 0x80070002 という詳細情報を含む 404.0 が返されます。

そして、アクションが呼び出されることはありません。正しいルーティングを得るために何を変更するべきか提案はありますか?

4

3 に答える 3

7

web.config を変更して、以下を含めることができます。

<modules runAllManagedModulesForAllRequests="true"/>

これにより、ルート内のピリオドとクエリ文字列で定義されていない ( ?) パラメータが許可されます。

于 2012-11-20T05:40:14.140 に答える
0

期間が問題のようです。ピリオドを含むルートにマップするたびに、ASP.NET MVC は物理ファイルを見つけようとします。ピリオドを削除すると、すべて正常に動作します。というわけで、やりたいことができそうになくて、今後は無期限でルートをマッピングしていきます。

于 2012-11-14T13:34:53.143 に答える
0

定義されたルートの順序も重要です。

カスタム ルートをデフォルト ルート宣言の上に移動してみてください。

于 2012-10-07T19:45:47.427 に答える