Ответ 1
Попробуйте выполнить развертывание Production, когда таких пользователей мало, например, в ночное время или в выходные дни. Сообщите пользователям, что произойдет плановый перерыв.
При развертывании в производственной среде вы можете создать файл App_Offline.htm и поместить его в корневой каталог ASP.NET Веб-сайт. ASP.NET признает, что этот файл имеет особое значение - все запросы динамической страницы отображаются на этой странице вместо страницы, запрошенной пользователем. Обычно на этой странице отображается дружественное сообщение, такое как "Сервер не работает для текущего обслуживания. Повторите попытку через 30 минут".
Еще один совет, чтобы сделать развертывание менее болезненным, - это максимально упростить ваш web.config между различными средами, такими как Development, Test и Production. Для вещей, которые действительно нужно изменить в разных средах, таких как строки подключения, вы можете извлечь их в свой собственный файл connectionStrings.config, установив в web.config.
Для развертывания баз данных есть несколько отличных сторонних инструментов (например, Сравнение баз данных Teratrax для SQL Server), которые позволяют сравнить схему и/или данных между двумя базами данных и создать SQL script, которые будут переносить целевую базу данных в схему другой базы данных. Будет ли это работать для вас, будет зависеть от ваших точных методов развития. Если вы не можете использовать такие инструменты, вы можете script изменить каждую базу данных, а затем воспроизвести эти сценарии при развертывании в другую среду.
И, конечно, в идеальном случае вы должны иметь тестовую среду, которая в точности похожа на Production, и позволяет выполнять все ваши приемочные испытания и гарантировать, что ваш выпуск будет стабильным, и ваше развертывание будет работать до того, как вы сделаете реальную вещь.