asp.netフォームのURLルーティングでルートを無視する方法
-
07-07-2019 - |
質問
.NET 3.5 SP1フレームワークを使用しており、アプリケーションにURLルーティングを実装しました。 JavaScriptエラーが発生しました:
エラー:ASP.NET Ajaxクライアント側フレームワークの読み込みに失敗しました。
スクリプトとして解釈されるが、MIMEタイプtext / htmlで転送されるリソース。
ReferenceError:変数が見つかりません:Sys
これは、ルーティングがmicrosoft axdファイルをピックアップしていて、javascriptを適切に送信していないためだと思います。いくつかの調査を行ったところ、 Routes.IgnoreRoute
を使用できることがわかりました。これにより、以下のようにaxdを無視できます。
Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
しかし、Global.asaxにその行を追加すると、次のエラーが表示されます:
CS1061:「System.Web.Routing.RouteCollection」には「IgnoreRoute」の定義が含まれておらず、タイプ「System.Web.Routing.RouteCollection」の最初の引数を受け入れる拡張メソッド「IgnoreRoute」が見つかりませんでしたディレクティブまたはアセンブリ参照を使用していますか?)
System.Web.Routing
名前空間をインポートしましたが、アイデアはありますか?
解決
ASP.NET MVCを参照する必要はありません。 IRouteHandlerを実装する StopRoutingHandler を使用できます。 so:
routes.Add(new Route("{resource}.axd/{*pathInfo}", new StopRoutingHandler()));
これは.NET 3.5 SP1の一部であり、MVCを必要としません。 IgnoreRoutesメソッドは、ASP.NET MVCの一部である便利な拡張メソッドです。
他のヒント
古い質問ですが、それがまだ誰にも役立つ場合、これは私のために働いた:
routes.Ignore("{resource}.axd/{*pathInfo}");
「無視」メソッドが存在しますが、標準ASP.NETでは" IgnoreRoute"メソッドが表示されない(つまり、MVCを使用しない)。これにより、Haackedのコードと同じ結果が得られますが、わずかにクリーンになります...
追加したいのは、IgnoreRoutesルールの順序が正しい順序であることを確認する必要があることです。そうしないと、最初のルートが最初に適用され、IgnoreRouteが...無視されます。
MapRouteとIgnoreRouteはSystem.Web.Mvcの拡張メソッドです---そのアセンブリは適切に参照されていますか?