我有一个存储在〜/ Content / Images /
的图像文件夹我正在通过
加载这些图片<img src="/Content/Images/Image.png" />
最近,图片未加载,我的错误日志中出现以下错误。奇怪的是,有些图像加载正常,而其他图像无法加载。
任何人都知道我的路线有什么问题?我错过了/ Content /文件夹的忽略路线吗?
我也为favicon.ico和其他一些图像文件得到了同样的错误......
<Fatal> -- 3/25/2010 2:32:38 AM -- System.Web.HttpException: The controller for path '/Content/Images/box_bottom.png' could not be found or it does not implement IController.
at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(Type controllerType)
at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName)
at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext)
at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext)
at System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
我目前的路线如下:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
routes.MapRoute(
"ControllerDefault", // Route name
"{controller}/project/{projectid}/{action}/{searchid}", // URL with parameters
new { controller = "Listen", action = "Index", searchid = "" } // Parameter defaults
);
谢谢!
答案 0 :(得分:5)
我会在第一个下面插入另一个被忽略的路线。
routes.IgnoreRoute("Content/Images/{*pathInfo}");
答案 1 :(得分:3)
如果查看解决方案资源管理器视图,我猜测您的内容文件夹位于项目的根目录中,还有控制器和视图的文件夹。尝试修改图像src,如下所示......
<img src="../../Content/Images/Image.png" />
答案 2 :(得分:2)
<img src="<%= Url.Content("~/Content/Images/Image.png")%>" alt="does this work?" />
答案 3 :(得分:1)
您需要向底部声明不太具体的路线:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"ControllerDefault",
"{controller}/project/{projectid}/{action}/{searchid}",
new { controller = "Listen", action = "Index", searchid = "" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
但我认为这不是问题所在。从例外情况来看,执行此应用程序的Web服务器似乎具有带有aspnet_isapi
过滤器的通配符映射,这意味着所有文件都将与ASP.NET运行时甚至静态文件相关联。
答案 4 :(得分:0)
你某处没有routes.RouteExistingFiles = true;
吗?
答案 5 :(得分:0)
异常... could not be found or it does not implement IController
不一定是错误的。实际上/favicon.ico
没有解析到控制器,所以这意味着下一个模块(或它是处理程序?)应该尝试处理请求。所以在某种程度上它是一个预期的异常&#34;。
问题是当记录此异常并阻塞日志时。使用log4net时,将以下<filter>
元素添加到默认的appender应该保留它:
<filter type="log4net.Filter.StringMatchFilter">
<regexToMatch value="System.Web.HttpException \(0x80004005\): The controller for path '[^']*' was not found or does not implement IController\." />
<acceptOnMatch value="false" />
</filter>