ASP.NET MVC считает мой виртуальный каталог контроллером - PullRequest
8 голосов
/ 28 апреля 2010

У меня есть виртуальный каталог под моим веб-сайтом MVC в IIS, который называется «Файлы». Этот каталог находится на том же уровне, что и мой каталог Views. Когда я связываю файл из моего приложения MVC с файлом в моем каталоге Files, я получаю следующую ошибку:

Контроллер для пути '/Files/Images/1c7f7eb8-5d66-4bca-a73a-4ba6340a7805.JPG' не найден или не реализован IController.

Он считает, что мой Files VD является контроллером. Как мне получить доступ к моим файлам, как к обычному виртуальному диску, без вмешательства MVC?

Спасибо.

Ответы [ 3 ]

23 голосов
/ 28 апреля 2010

При регистрации маршрутов попробуйте добавить следующие правила игнорирования.

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
            }
2 голосов
/ 28 апреля 2010

ASP.Net сначала ищет каталог, а затем пытается сопоставить контроллер, поэтому то, что вы делаете, должно работать. Вы уверены, что файл с таким именем существует и доступен?

1 голос
/ 28 апреля 2010

Я думаю, вам нужно добавить вызов к routes.Ignore() статическому маршруту в вашем файле Global.asax, чтобы .NET MVC мог игнорировать запрос:

RouteCollection.Ignore (String) - MSDN

...