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