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来解决错误。