Развертывание приложения ASP.NET MVC в IIS7 и поддержание чистого файла web.config
Я хочу развернуть свое приложение ASP.NET MVC в компании, занимающейся веб-хостингом (например, DiscountASP.net). Я не понимаю, что должно быть в файле web.config на веб-сервере. Когда я создаю проект локально, я получаю раздутый web.config со всевозможными дополнительными модулями, обработчиками, компиляторами. Нужно ли мне добавлять все эти элементы в рабочий файл web.config?
Я все еще развертываю свое текущее приложение ASP.NET (не MVC) в IIS6, и я всегда вручную создавал простой web.config для производственной среды и загружал его вместе с остальными файлами приложения. Похоже, что с IIS7 я должен использовать диспетчер IIS на веб-сервере для создания файла web.config. Как лучше всего создавать / управлять файлом web.config на рабочем сервере?
Ответов (4)4
Итак, вот что я обнаружил, пытаясь развернуть свое приложение MVC на DiscountASP.net.
Первое, что я обнаружил, это то, что я должен был убедиться, что System.Web.Mvc был развернут в корзину, поскольку он не установлен в GAC:
http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx
Затем я начал с супер-базового файла web.config, который просто содержал строку подключения к базе данных. Мое приложение не сработало.
Затем я скопировал беспорядок, связанный с моим локальным файлом web.config, на сервер и изменил строку подключения к базе данных, и все начало работать, но я все еще получал сообщение об ошибке:
Could not load type 'System.Web.Mvc.ViewPage<MyCustomModel>'
Затем я нашел эту статью, в которой объясняется, как вам нужно изменить web.config, чтобы не использовать код за файлами (по какой-то причине вам не нужно делать это с локальным веб-сервером Visual Studio):
http://blog.benhall.me.uk/2009/01/aspnet-mvc-rc1-removing-code-behind.html
Лично мне не нравится, как простые настройки приложения, такие как строки подключения и настройки SMTP, смешиваются со сложными настройками инфраструктуры MVC (и AJAX.NET). Один хороший вариант - для хостинговой компании (например, DiscountASP.net) настроить Master.config (или более высокий уровень web.config) для поддержки MVC, чтобы мой web.config содержал только мое простое приложение. настройки.
.Net 3.5 и IIS7 добавляют довольно много текста в web.config. Что я делаю, так это использую диспетчер IIS в IIS7 для однократной настройки приложения. Затем я беру этот измененный файл web.config и возвращаю его в систему управления версиями. Таким образом, все настройки IIS сохраняются при миграции между средами.
Возможно, вы воспользуетесь подходом поиска и уничтожения и откажетесь от конфигурации, пока не удалите все, что вам не нужно. Не зная вашего приложения и его зависимостей, трудно сказать, что вам может понадобиться, а что нет.
Лучший подход - всегда иметь среду разработки, которая максимально точно отражает вашу производственную среду - вы не хотите редактировать производственные конфигурации таким образом.