8

我在 IIS 中的 MVC 网站下有一个名为“文件”的虚拟目录。该目录与我的 Views 目录处于同一级别。当我将 MVC 应用程序中的文件链接到 Files 目录下的文件时,出现以下错误:

找不到路径“/Files/Images/1c7f7eb8-5d66-4bca-a73a-4ba6340a7805.JPG”的控制器或未实现 IController。

它认为我的 Files VD 是一个控制器。如何在不受 MVC 干扰的情况下像普通 VD 一样访问我的文件?

谢谢。

4

3 回答 3

23

注册路由时,尝试添加以下忽略规则。

public static void RegisterRoutes(RouteCollection routes)
            {
                /* Ignore static content, see
                 http://weblogs.asp.net/rashid/archive/2009/04/03/asp-net-mvc-best-practices-part-2.aspx 
               */
                routes.RouteExistingFiles = false;
                routes.IgnoreRoute("Content/{*pathInfo}");
                routes.IgnoreRoute("Scripts/{*pathInfo}");
                routes.IgnoreRoute("Styles/{*pathInfo}");
                routes.IgnoreRoute("{*favicon}",
                    new { favicon = @"(.*/)?favicon.([iI][cC][oO]|[gG][iI][fF])(/.*)?" });

                //Ignore handlers and resources
                routes.IgnoreRoute("{resource}.ashx/{*pathInfo}");
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

               // your routes go here
            }
于 2010-04-28T14:43:42.680 回答
2

ASP.Net 首先查找目录,然后尝试匹配控制器,因此您所做的应该可以工作。您确定具有该名称的文件存在并且可以访问吗?

于 2010-04-28T14:40:00.440 回答
1

我认为您必须在 Global.asax 文件中添加对routes.Ignore() 静态路由的调用,以便 .NET MVC 知道忽略该请求:

RouteCollection.Ignore(字符串) - MSDN

于 2010-04-28T14:31:25.477 回答