Как правильно публиковать и обновлять ASP.NET приложение в IIS

#c# #asp.net #iis #iis-7

#c# #asp.net #iis #iis-7

Вопрос:

У меня возникает проблема каждый раз, когда я обновляю свой ASP.NET приложение на моем сервере IIS. Проблемы заключаются в:

  • Я получаю сообщение об ошибке, сообщающее мне отключить пользовательские ошибки <customErrors mode="Off"/>
  • Перенаправление веб-сайта по умолчанию в TLD перенаправляет URL-адрес на неопределенный срок
  • Я создал, удалил и заменил приложение или перенаправление

У меня есть ASP.NET 4.5 Рамочное приложение. Я использую Visual Studio 2012 для создания веб-приложения. Я использую 64-разрядную версию Windows Server 2008 R2 с установленной ролью IIS 7. Все последние параметры для роли IIS были проверены и установлены.

Как только IIS запущен и запущен, я создал каталог в C:inetpubwwwroot и поместил мой опубликованный ASP.NET приложение в каталоге, который я создал. Затем я добавил приложение через диспетчер IIS.

введите описание изображения здесь

После этого я могу перейти к своему приложению из www.example.com/app . Текущее приложение работает. Поскольку я хочу, чтобы перенаправлялся любой, кто вводит мой TLD в веб-браузере, я создал перенаправление HTTP через диспетчер IIS на веб-сайте по умолчанию. Он создает web.config файл в C:inetpubwwwroot с редиректом в нем.

После того, как все это сделано, все работает отлично. Это до тех пор, пока я не захочу обновить ASP.NET код. Я удаляю старые файлы из C:inetpubwwwrootapp и скопируйте в новые файлы. После этого больше ничего не работает правильно. Я попытался удалить приложение через IIS, а затем повторно добавить его. Я даже удалил перенаправление http, а затем повторно добавил его. Независимо от того, что я делаю, корень моего сайта www.example.com и веб-приложение не будет работать. Я должен удалить роль IIS и переустановить ее. Как только я это сделаю, текущий код заработает, и все вернется в нормальное русло.

Может кто-нибудь, пожалуйста, скажите мне, как я могу обновлять свой код при необходимости каждый раз переустанавливать IIS?

Комментарии:

1. Это сообщение о том, что вам нужно отключить режим customErrors, не является вашей фактической ошибкой. Он направляет вас на это, потому что есть какая-то основная ошибка, но она не будет показывать фактическую ошибку по умолчанию, если вы не перейдете к ней на localhost (в целях безопасности). Оставлять customErrors отключенными — плохая практика (если только это не временно). Вместо этого реализуйте правильное ведение журнала ошибок, например Elmah . Как только вы определите, в чем заключается фактическая ошибка, вы сможете устранить основную причину.

2. Я не уверен, но пробовали ли вы «обновить» (не удаляя и не заменяя файлы) папку приложения в IIS без вашего web.config?

3. @mason Ошибок нет. Как только я удаляю и переустанавливаю IIS, все работает нормально с новым обновленным кодом

4. Не удаляйте и не переустанавливайте IIS — попробуйте получить фактическое сообщение об ошибке, чтобы вы могли выяснить, в чем заключается основная проблема (проверьте журналы событий на сервере или установите customErrors=Off .)

5. После создания каталога в C:inetpubwwwroot вы пытались обновить веб-сайт из диспетчера IIS, щелкнуть правой кнопкой мыши по папке и выбрать Преобразовать в приложение, чтобы избежать «смешивания» конфигурации приложения и конфигурации веб-сайта

Ответ №1:

После того, как вы создали перенаправление в IIS, оно создало перенаправление в файле web.config в C:inetpubwwwroot

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

Вы должны добавлять свои файлы публикации, а не удалять их, поскольку вы просите IIS перенаправить для вас 🙂

Ответ №2:

при обновлении файлов, пожалуйста, обратитесь к старому файлу web.config, который был запущен ранее. просто убедитесь, что если вы изменили ссылки или сборку в коде, затем обратитесь к новому файлу web.config, иначе старый файл будет работать вместо переустановки служб IIS.

Ответ №3:

После обновления файлов проверьте настройки разрешений папки в меню свойства папки-> безопасность-> дополнительные настройки. если вложенные папки меняют свои настройки при каждом обновлении, это может быть проблемой.

Ответ №4:

Возможно ли иметь app_offline.htm при этом отображается сообщение типа «этот сайт временно недоступен для обслуживания, пожалуйста, проверьте еще раз позже»?

Такие файлы позволяют обновлять ваш сайт без каких-либо неприятных сообщений об ошибках.

Комментарии:

1. Нет, не совсем, я не думаю, что это выглядит профессионально.

Ответ №5:

я нашел УДИВИТЕЛЬНЫЙ учебник, который решил эту проблему для меня… Я должен согласиться с тем, что касается файла web.config, используйте ваш текущий (сделайте его копию, если у вас установлены настройки публикации для удаления старых файлов — я допустил ту же ошибку и обнаружил, что мне пришлось повторно предоставить доступ к моей папке wwwroot, а такжемоя база данных по какой-то причине).

этот учебник — это то, что помогло мне в процессе установки, а затем и обновления моего приложения.

ТАКЖЕ

  • Если вы вносите изменения только в свои представления или файлы css, вы можете просто скопировать и вставить обновленные представления в эту папку — я обнаружил, что это гораздо менее инвазивно, чем повторная публикация всего проекта при каждом обновлении.

проверьте ссылку ниже, чтобы получить помощь в публикации и настройке IIS и SQL server

https://www.codeproject.com/Articles/674930/Configuring-IIS-ASP-NET-and-SQL-Server

Ответ №6:

Покажите нам настройки пула приложений.

Может быть много проблем, таких как права доступа к файловой системе для пользовательского контекста, в котором запущен пул приложений.

Может быть разрешение на доступ к базе данных.

Нам нужно немного больше информации.