Развертывание приложения 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)

Решение

Итак, вот что я обнаружил, пытаясь развернуть свое приложение 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 сохраняются при миграции между средами.

System.Web.Extensions - это материал MS AJAX AKA Atlas, с этой сборкой связано несколько модулей, обработчиков и разделов. Не стесняйтесь удалять их, если вы не используете материал MS AJAX.

Возможно, вы воспользуетесь подходом поиска и уничтожения и откажетесь от конфигурации, пока не удалите все, что вам не нужно. Не зная вашего приложения и его зависимостей, трудно сказать, что вам может понадобиться, а что нет.

Лучший подход - всегда иметь среду разработки, которая максимально точно отражает вашу производственную среду - вы не хотите редактировать производственные конфигурации таким образом.