Я получаю ошибку "не реализует IController" на изображениях и роботах.txt в MVC2
Я получаю странную ошибку на моем веб-сервере для, казалось бы, каждого файла, но .aspx-файлов.
вот пример. Просто замените '/роботы.тхт с любой .jpg имя или .gif или что-то еще, и вы получите идею:
контроллер для пути '/роботы.txt'
не найден или не реализует
IController.
Я уверен, что это как-то связано с тем, как я настроил маршрутизацию, но я не уверен, что именно мне нужно делать оно.
кроме того, это смешанный сайт MVC и WebForms, если это имеет значение.
6 ответов:
Вы можете игнорировать роботов.txt и все страницы aspx в вашей маршрутизации.
routes.IgnoreRoute("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"}); routes.IgnoreRoute("{*robotstxt}", new {robotstxt=@"(.*/)?robots.txt(/.*)?"});
вы можете игнорировать фавикон тоже.
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
вы можете настроить регулярное выражение для исключения путей.
Haacked от источник.
маршрут игнорирования, приведенный выше, не работал для меня, но я нашел аналогичный, который сделал:
routes.IgnoreRoute("{*staticfile}", new { staticfile = @".*\.(css|js|gif|jpg)(/.*)?" });
эта ошибка также может произойти, если внутри представления в вашем регионе вы используете Html.Помощники действий. Этот помощник всегда будет использовать область в качестве дополнения, если вы специально не скажете ему этого не делать. Например,
@Html.Action("Main", "Navigation", new { area = string.Empty })
нашел другое решение тоже... Хотя я не думаю, что буду использовать его, это стоит показать здесь в ответах:
следующее должно (теоретически) игнорировать поиск контроллеров для чего-либо с '.' в нем.
routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = "" }, // Parameter defaults new { controller = @"[^\.]*" } // Parameter contraints. );
У вас еще есть:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
... в вашем глобальном.асакс.в CS?
MVC помещает его туда по умолчанию, и он должен справиться с этим.
Если вы это сделаете, то проблема может заключаться в том, как вы смешиваете MVC и WebForms.
я столкнулся с этой ошибкой, когда я запрашиваю ресурсы, которые не существовали.
в частности, я запрашивал пользовательский файл IE css:
<!--[if lt IE 8]>@Styles.Render("~/Content/ie7.css")<![endif]-->
(это состояние комментарии, интерпретируется IE)
однако фактический ресурс существовал на ~ / Content/ie / ie7.стиль CSS.
таким образом, без каких-либо изменений в маршрутизации, ошибка была решена с помощью правильного url ресурса.
Comments