Раніше, під час публікації проєктів, файли копіювалися і вставлялися до каталогу сайту або завантажувалися до каталогу сайту через 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 і заповніть інформацію про сервер, як показано на наступному рисунку:
Перевірте з'єднання, і тест пройшов, як показано на наступному зображенні:
Коли я намагався опублікувати, помилка була такою:
Завдання розгортання вебу не вдалося. ((9.10.2020) 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 type, ім'я рядка, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner), 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) на Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path, булевий isFile) на 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) на Microsoft.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData) на Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData) Рішення:
Перезапустіть VS Tools, натисніть Publish, і з'явиться наступне зображення:
Перевірка "Збережіть цей сертифікат для майбутніх сесій у Visual Studia"можна вирішити.
Вперше публікація була повільною, оскільки всі файли потрібно було завантажити на сервер, як показано на рисунку нижче:
Спробуйте змінити файл сторінки Index.cshtml і натисніть «Опублікувати», оновлені будуть лише наступні 3 файли, як показано на рисунку нижче:
Оновіть сайт і дізнайтеся, що він оновлений, як показано нижче:
(Кінець)
|