23

.NET 3.5 SP1 フレームワークを使用しており、アプリケーションに URL ルーティングを実装しました。JavaScriptエラーが発生していました:

Error: ASP.NET Ajax client-side framework failed to load.
Resource interpreted as script but transferred with MIME type text/html.
ReferenceError: Can't find variable: Sys

これは、ルーティングが Microsoft axd ファイルを取得し、javascript を適切に送信していないためだと思います。いくつかの調査を行ったところ、 を使用できることがわかりましたRoutes.IgnoreRoute。これにより、次のように axd を無視できるようになります。

Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

しかし、その行を Global.asax に追加すると、次のエラーが発生します。

CS1061: 'System.Web.Routing.RouteCollection' does not contain a definition for 'IgnoreRoute' and no extension method 'IgnoreRoute' accepting a first argument of type 'System.Web.Routing.RouteCollection' could be found (are you missing a using directive or an assembly reference?)

System.Web.Routing名前空間をインポートしました。アイデアはありますか?

4

4 に答える 4

40

ASP.NET MVC を参照する必要はありません。次のようにIRouteHandlerを実装する StopRoutingHandler を使用できます。

routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));

これは .NET 3.5 SP1 の一部であり、MVC は必要ありません。IgnoreRoutes メソッドは、ASP.NET MVC の一部である便利な拡張メソッドです。

于 2008-11-09T15:47:37.890 に答える
8

古い質問ですが、それでも誰かに役立つ場合は、これでうまくいきました。

routes.Ignore("{resource}.axd/{*pathInfo}");

「Ignore」メソッドは存在しますが、標準のASP.NETでは「IgnoreRoute」メソッドは存在しないように見えます(つまり、MVCを使用していません)。これにより、Haackedのコードと同じ結果が得られますが、少しクリーンになります...

于 2011-10-25T13:02:49.377 に答える
3

IgnoreRoutes ルールの順序が正しい順序であることも確認する必要があることを追加したいと思います。そうしないと、最初のルートが最初に適用され、IgnoreRoute は無視されます。

于 2009-04-05T22:54:59.567 に答える
1

MapRoute と IgnoreRoute は System.Web.Mvc の拡張メソッドです --- そのアセンブリは適切に参照されていますか?

于 2008-11-07T20:09:21.950 に答える