У меня есть приложение, которое начало свою жизнь как приложение MVC (1.0) в Visual Studio 2008 Sp1 с кучей проектов Silverlight 3 в составе сайта. Ничего особенного. Использование Ninject для внедрения зависимостей (первая бета-версия 2, теперь выпущенная версия 2 с расширениями MVC).
С выпуском .Net 4.0, VS2010, MVC2 и т. Д. Мы решили переместить приложение на новейшую платформу. Мастер преобразования в VS2010, очевидно, позаботился обо всем, за одним исключением - он не изменил ссылки на mvc1, чтобы теперь указывать на mvc2, поэтому мне пришлось сделать это вручную. Конечно, это заставляет меня задуматься о других вещах MVC2, которые могли бы отсутствовать в моем приложении, что было бы там, если бы я сделал File -> New Project ... Но это не главное в этом вопросе.
Когда я развертываю это приложение на сервере IIS 7.5 (работает на Win2008 R2 x64), приложение как таковое работает. Однако изображений, сценариев и другого статического содержимого, похоже, не существует. Конечно, они есть на диске на сервере, но они не отображаются в клиентском веб-браузере.
Я довольно новичок в IIS, поэтому я знал только одну хитрость - попытаться открыть веб-страницу в браузере на сервере, поскольку это может дать мне больше информации. И вот, наконец, мы встречаемся с нашим врагом. Если я пытаюсь перейти непосредственно к URL-адресу одного из изображений (например, http://server/Content/someimage.jpg), в браузере появляется следующая ошибка:
IControllerFactory 'Ninject.Web.Mvc.NinjectControllerFactory' не вернул контроллер для контроллера с именем 'Content'.
Aha. Веб-сервер пытается передать этот запрос в MVC, который с его настройкой маршрутизации по умолчанию предполагает, что Content является контроллером, и завершается неудачей.
Как я могу заставить его рассматривать Content / и Scripts / (среди прочего) как неконтроллерные и просто проходить через статический контент? Это, конечно, работает с Cassini на моей машине разработчика, но как только я разверну, эта проблема решается.
Я использую последнюю версию Ninject MVC 2, где инструмент IoC должен передавать недостающие контроллеры фабрике базовых контроллеров, но это, очевидно, не помогло. Я также попытался добавить маршруты игнорирования для Контента и т. Д., Но это, по-видимому, также не имеет никакого эффекта. Я даже не уверен, что решаю проблему на правильном уровне.
Кто-нибудь знает, где искать это приложение? У меня есть полный контроль над веб-сервером, поэтому я могу более или менее делать с ним все, что захочу, пока он начинает работать.
Спасибо!