Развертывание приложения MVC на веб-сервере выполняется неправильно - PullRequest
2 голосов
/ 23 февраля 2010

Я читаю посты всю ночь в поисках ответа на свой вопрос и пока не нашел ничего подходящего для меня. Я уверен, что есть простой способ сделать это, но я пока не смог его обнаружить.

Подробнее: MVC 2 Preview Asp.net 3.5 sp1 framework VS 2008 C # веб-приложение Windows Server 2008 IIS 7

У меня приложение хорошо работает до VS 2008 без проблем. Когда я запускаю игру для запуска в режиме отладки, он запускает ASP.NET Development Server, приложение загружается нормально и работает как положено, отлично!

Когда я публикую приложение локально или на своем веб-сервере в IIS 7, приложение работает неправильно. Некоторые значки отсутствуют, а карта Google Maps отсутствует. Когда я просматриваю источник, он кажется правильным на первый взгляд, но я вижу, что пути к изображениям ищут пути MVC, а не находят их. Кажется, приложение работает как обычное приложение asp.net, а не как приложение mvc, может быть?

Я также попытался просто локально набрать полный исходный код на localhost, и точно такая же проблема присутствует.

Итак, я предполагаю, что мой вопрос заключается в том, как развернуть приложение MVC для запуска того же в IIS, что и на сервере разработки.

PS Среда чистая и в значительной степени из коробки.

Ответы [ 4 ]

0 голосов
/ 25 февраля 2010

Когда вы запускаете свой сайт через Visual Studio, каждый отдельный запрос обрабатывается через конвейер ASP.NET, включая изображения, CSS и другие ресурсы. По умолчанию IIS обрабатывает только определенные расширения (например, aspx), если вы не укажете это через конфигурацию. Пути типа '/content/images/yourimage.jpg' должны работать просто отлично ... Я подозреваю, что в вашей конфигурации IIS что-то не так.

Другая возможность, с которой я столкнулся, это любые пользовательские фильтры ISAPI, которые вы, возможно, установили на сервере IIS (например, ISAPI_rewrite). В его конфигурации легко настроить правила, которые приведут к неожиданным результатам.

0 голосов
/ 23 февраля 2010

У меня были установлены относительные пути, но я не понял, что, когда я развернул его на сервере, он перешел на wwwroot \ subsite ... У меня были установлены относительные пути src = ".... \ image .jpg ", чтобы вернуться в корень сайта. Моя ошибка состояла в том, что если сайт не находится в корне, то дочерний сайт сверлит обратно в корень, чтобы найти изображения и, конечно, не найдет их. То же самое происходило с файлами JS. Я использовал Url.Content, и он работал отлично! проблема решена!

Интересно, что при работе через VS-сервер VS с дочерним сайтом он все еще работал хорошо и находил пути, хотя и не должен был это делать. VS dev server <> IIS

Спасибо за вашу помощь в этом!

Саймон.

0 голосов
/ 24 февраля 2010

Как только вы узнаете виртуальный путь к папке, в которую вы развертываете проект, вы должны перейти в конфигурацию проекта в Visual Studio и добавить его в свой проект. Таким образом, сервер разработки Visual Studio будет использовать ту же структуру пути, что и сервер развертывания. Это сэкономит вам бесчисленные часы работы при развертывании.

0 голосов
/ 23 февраля 2010

@ user68137 правильно говорит, что вам нужно использовать относительные пути для изображений.

Меня тоже поймали на этом, и вот мой предыдущий ТАК вопрос об этом ...

Короче, нужно сделать что-то вроде этого ...

 <img src='<%= Url.Content( "~/Content/Images/banner.jpg" ) %>' alt="Banner" /> 

Надеюсь, это поможет!

...