MVC2中的图像和robots.txt中出现“不执行IController”错误
我得到一个奇怪的错误在我的networking服务器看似每个文件,但.aspx文件。
这是一个例子。 只要将“/robots.txt”replace为任何.jpg名称或.gif或其他内容即可,您将会看到:
path“/robots.txt”的控制器未find或未实现IController。
我相信这是如何设置路由,但我不知道我需要做什么。
另外,这是一个混合的MVC和WebForms网站,如果这有所作为。
您可以忽略robots.txt和路由中的所有aspx页面。
routes.IgnoreRoute("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"}); routes.IgnoreRoute("{*robotstxt}", new {robotstxt=@"(.*/)?robots.txt(/.*)?"});
你可能也想忽略favicon。
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
您可以调整正则expression式来排除path。
从源头上揪出来的。
上面给出的忽略路线对我来说不起作用,但是我发现了类似的路线:
routes.IgnoreRoute("{*staticfile}", new { staticfile = @".*\.(css|js|gif|jpg)(/.*)?" });
这个错误也可能发生,如果在你的区域内的视图,你使用Html.Action帮手。 除非你明确地告诉它,否则这个帮助者将永远使用该区域作为前置。 例如,
@Html.Action("Main", "Navigation", new { area = string.Empty })
我也find了另一个解决scheme …虽然我不认为我会使用它,但值得在这里回答:
下面应该(在理论上)忽略寻找具有“。”的任何东西的控制器。 在里面。
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}");
…在你的Global.asax.cs中?
MVC默认情况下,它应该处理这个。
如果你这样做,那么问题可能是你如何混合MVC和WebForms。
当我请求不存在的资源时遇到此错误。
具体来说,我要求一个自定义的IE浏览器的CSS文件:
<!--[if lt IE 8]>@Styles.Render("~/Content/ie7.css")<![endif]-->
(这些是条件注释 ,由IE解释)
但是,实际资源存在于〜/ Content / ie / ie7.css中。
所以,如果不对路由进行任何修改,就可以通过使用正确的资源URL来解决错误。