Раньше при публикации проектов файлы копировали и вставлялись в каталог сайта или загружались в каталог сайта через FTP, но теперь, с появлением непрерывной интеграции, автоматизированной эксплуатации и обслуживания, а также автоматизированной публикации, издательские проекты тоже меняются с каждым днём.
В этой статье описывается, как публиковать удалённо на удалённом сайте IIS через VS 2019.
Система удалённых серверов: Windows Server 2019 64-битный
Конфигурация сервера
1. Добавить IIS, установить .NET фреймворк (опущено)
2. Скачать и установить Web Deployment
Web Deployment можно использовать для локального и удалённого развертывания веб-проектов по следующему адресу:Вход по гиперссылке виден.
Во время установки выберите«Завершено»После установки вы увидите сервис «Web Management Service» в сервисе, как показано на рисунке ниже:
Если он не установлен, VS получит следующую ошибку при удаленной публикации:
--------------------------- Microsoft Visual Studio --------------------------- Не удалось подключиться к удалённому компьютеру («xx»). Убедитесь, что Web Deployment установлен на удалённый компьютер и запущен необходимый процесс («Web Management Service»). Узнайте больше на:https://go.microsoft.com/fwlink/ ... ATION_NOT_REACHABLE。 Не удаётся подключиться к удалёным серверам --------------------------- Уверен ---------------------------
3. Установите «скрипты и инструменты управления IIS»
Перейдите в раздел «Выберите роли сервера > веб-сервер (IIS) > «Административные инструменты», затем выберите роль «Административные скрипты и инструменты IIS», нажмите «Далее» и установите роль.
4. IIS обеспечивает удалённые соединения
Найдите сервис управления в IIS и включите удалённые соединения, как показано на следующем изображении:
(Примечание:Откройте входящий порт 8172 в группе фаервола и безопасности)
5. Создайте новый сайт IIS
Создайте новый сайт с названием test1, как показано на следующем рисунке:
6. IIS добавляет административных пользователей
Добавьте пользователя IIS Manager, как показано на следующем изображении:
Одновременно на сайте test1 добавьте авторизацию, как показано на рисунке ниже:
Если вы не добавите авторизацию, при удаленной публикации будет сообщена следующая ошибка:
--------------------------- Microsoft Visual Studio --------------------------- Вы подключились к удалённому компьютеру («xxx») через сервис управления вебом, но не смогли его авторизировать. Убедитесь, что вы используете правильное имя пользователя и пароль, что сайт, к которому вы подключены, уже существует, и что пользователь, чьи учетные данные представляют собой доступ к сайту. Узнайте больше на:https://go.microsoft.com/fwlink/ ... R_USER_UNAUTHORIZED。 Удалённый сервер возвращает ошибку: (401) Unauthorized. --------------------------- Уверен --------------------------- Выпуск ASP.NET MVC проекта
Во-первых, создать новый проект .NET 4.6.2 asp.net mvc под названием WebAutomatedDeployment с использованием VS 2019,
Создайте две новые библиотеки, и веб-программа одновременно ссылается на эти две библиотеки. (Создайте и ссылайтесь на 2 библиотеки, так как симуляция ближе к официальному проекту)
Попробуйте начать проект, как показано ниже:
Кликните правой кнопкой мыши по проекту, выберите Publish, Web Server (IIS)-> Web Deployment и заполните информацию о сервере, как показано на следующем рисунке:
Проверьте соединение, и тест проходит, как показано на следующем изображении:
Когда я попытался опубликовать, ошибка была следующей:
Задача развертывания веб-платформы провалилась. ((2020/10/9 11:34:38) Запрос на обработку ошибок на удалённом компьютере. )
(2020/10/9 11:34:38) Запрос на обработку ошибок на удалённом компьютере. Сервер испытывает трудности с обработкой запроса. Свяжитесь с администратором сервера для получения подробностей. WebAutomatedDeployment 0 Вы можете просматривать конкретные ошибки через Server Event Viewer, как показано на следующем рисунке:
User: itsvse IP клиента: xxx
Content-Type: application/msdeploy
Version: 9.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 9.0.3802.0
MSDeploy.Method: Sync
MSDeploy.RequestId: def8d9f7-1a72-4b19-8b75-919f8c6a9604
MSDeploy.RequestCulture: zh-CN
MSDeploy.RequestUICulture: zh-CN
ServerVersion: 9.0.1973.0
Skip: objectName="^configProtectedData$"
Provider: auto, Path: Произошёл исключение агента развертывания trace, распространявшееся на клиента. Идентификатор запроса "def8d9f7-1a72-4b19-8b75-919f8c6a9604", метка времени: "2020/10/9 11:51:29". Детали ошибок:
System.UnauthorizedAccessException: 尝试执行未经授权的操作。 В System.Security.AccessControl.Win32.SetSecurityInfo(тип ResourceType, имя строки, дескриптор SafeHandle, securityInfos securityInformation, владелец SecurityIdentifier), SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl) в System.Security.AccessControl.NativeObjectSecurity.Persist(имя строки, дескриптор SafeHandle, AccessControlSections includeSections, Object exceptionContext) В System.Security.AccessControl.NativeObjectSecurity.Persist(Имя строки, AccessControlSections includeSections, Object exceptionContext) at Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path, Boolean isFile) at Microsoft.Web.Deployment.SetAclProvider.Add(DeploymentObject source, булевый whatIf) на Microsoft.Web.Deployment.DeploymentObject.Update (DeploymentObject source, DeploymentSyncContext syncContext) на Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject) на Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source) на Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject) В Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable'1 syncPassId, String syncSessionId) на Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable'1 passId, String user, String siteName) at Microsoft.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData) на Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData) Решение:
Перезапустите VS Tools, нажмите Опубликовать, и появится следующее изображение:
Проверка «Сохраните этот сертификат для будущих сессий в Visual Studiaможет быть решено.
В первый раз публикация шла медленно, потому что все файлы нужно было загрузить на сервер, как показано на рисунке ниже:
Попробуйте изменить файл страницы Index.cshtml и нажмите Republish, обновятся только следующие 3 файла, как показано на рисунке ниже:
Обновите сайт и узнайте, что он был обновлён, как показано ниже:
(Конец)
|