.aspxファイル以外のすべてのファイルについて、Webサーバーで奇妙なエラーが発生しています。
以下に例を示します。 「/robots.txt」を任意の.jpg名または.gifなどで置き換えるだけで、アイデアが得られます。
パス '/robots.txt'のコントローラーが見つからないか、IControllerを実装していません。
ルーティングのセットアップ方法と関係があるとは思いますが、どうすればルーティングを行う必要があるかはわかりません。
また、違いがある場合、これはMVCとWebFormsの混合サイトです。
Robots.txtとルーティング内のすべてのaspxページを無視できます。
routes.IgnoreRoute("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"});
routes.IgnoreRoute("{*robotstxt}", new {robotstxt=@"(.*/)?robots.txt(/.*)?"});
ファビコンも無視してください。
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
正規表現を調整して、パスを除外できます。
source からハッキングされました。
上記の無視ルートは機能しませんでしたが、同様の機能が見つかりました。
routes.IgnoreRoute("{*staticfile}", new { staticfile = @".*\.(css|js|gif|jpg)(/.*)?" });
このエラーは、お住まいの地域のビュー内でHtml.Actionヘルパーを使用した場合にも発生する可能性があります。このヘルパーは、特にそうしないように指定しない限り、常にエリアを前置詞として使用します。例えば。、
@Html.Action("Main", "Navigation", new { area = string.Empty })
今でも持っていますか:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
... Global.asax.csで?
MVCはデフォルトでそこに配置し、これを処理することになっています。
そうした場合、問題はMVCとWebFormをどのように混在させるかです。
私は 別の解決策 も見つけました...私はそれを使用するとは思わないが、答えでここに示す価値がある:
以下は(理論上) '。'が付いているもののコントローラを探すことを無視するべきです。初期化。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" }, // Parameter defaults
new { controller = @"[^\.]*" } // Parameter contraints.
);
存在しないリソースを要求すると、このエラーが発生しました。
具体的には、カスタムIE cssファイルを要求していました。
<!--[if lt IE 8]>@Styles.Render("~/Content/ie7.css")<![endif]-->
(これらは 条件コメント であり、IEによって解釈されます)
ただし、実際のリソースは〜/ Content/ie/ie7.cssに存在していました。
そのため、ルーティングを変更せずに、リソースの正しいURLを使用することでエラーを解決しました。