В настоящее время я использую облачную службу Azure (классическую) и могу эффективно развернуть веб-приложение, содержащее 4 виртуальных приложения, с помощью проекта облачной службы Azure. Мой файл ServiceDefinition.csdef выглядит так:
<?xml version = "1.0" encoding = "utf-8"?>
<ServiceDefinition name = "My.Azure.Web.API" xmlns = "http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion = "2015-04.2.6">
<WebRole name = "My.Web.API" vmsize = "Small">
<Sites>
<Site name = "Web" physicalDirectory = "{path to My.Web.API}">
<VirtualApplication name = "webapp1" physicalDirectory = "{path to My.Web.WebApp1}" />
<VirtualApplication name = "webapp2" physicalDirectory = "{path to My.Web.WebApp2}" />
<VirtualApplication name = "webapp3" physicalDirectory = "{path to My.Web.WebApp3}" />
<VirtualApplication name = "webapp4" physicalDirectory = "{path to My.Web.WebApp4}" />
<Bindings>
<Binding name = "Endpoint1" endpointName = "Endpoint1" />
<Binding name = "HttpsIn" endpointName = "HttpsIn" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name = "Endpoint1" protocol = "http" port = "80" />
<InputEndpoint name = "HttpsIn" protocol = "https" port = "443" certificate = "{certname}" />
</Endpoints>
<Imports>
<!--<Import moduleName = "Diagnostics" />-->
<Import moduleName = "RemoteAccess" />
<Import moduleName = "RemoteForwarder" />
</Imports>
<ConfigurationSettings>
</ConfigurationSettings>
<Certificates>
<Certificate name = "{certname}" storeLocation = "LocalMachine" storeName = "My" />
</Certificates>
</WebRole>
</ServiceDefinition>
Я работаю над переходом на Службу приложений Azure, и, несмотря на некоторые значительные исследования, я не могу найти эквивалентный/похожий процесс развертывания в Visual Studio для нескольких виртуальных приложений в Службе приложений Azure.
Я нашел множество публикаций, указывающих на использование функции публикации в реальных проектах WebApp, но мне пришлось бы выполнять 4 отдельных развертывания вместо одного. И необходимо предварительно определить виртуальные каталоги в конфигурации службы приложений. При текущем подходе виртуальные приложения/каталоги определяются во время развертывания.
Я планирую в конечном итоге перейти на Azure DevOps Pipelines для CI/CD и надеюсь, что есть механизм для достижения этого, но сейчас мне просто нужно что-то функциональное из Visual Studio.
Существует ли эквивалентный/похожий процесс развертывания в Visual Studio для нескольких виртуальных приложений в службе приложений Azure? Если нет, то какие есть варианты?
Извиняюсь, если это повтор. Я провел должную осмотрительность без окончательных ответов. Если, конечно, ответ прямо передо мной!? Спасибо за ваше время!
Эрик
Выполните следующие действия, чтобы развернуть несколько виртуальных приложений в службе приложений Azure из Visual Studio 2022.
Download publish profile
.VS 2022
создайте приложения нужного вам фреймворка. Я взял .NET Core Apps
в качестве примера.Структура папки проекта Visual Studio
Возможность создания Virtual Directories
на портале Azure доступна только для Azure Windows App Service
.
Azure Portal
=> App Service
=> Configuration
=> Path mappings
=> Под Virtual applications and directories
создайте New Virtual application
.Virtual Path
такой же, как Web App Name
в VisualStudio
.Публикуйте каждое приложение в VS в службе приложений Azure, используя загруженный профиль публикации.
1st WebApp
=> Publish
=> Добавить профиль публикации => Import Profile
.Publish Profile
, который мы скачали с Azure Portal App Service
.App Service name/VirtualPathName
, которое мы создали на портале.
Пример: Вот это VirtualApps29Dec/WebApp1
.Сохраните и перейдите к следующим шагам, чтобы опубликовать приложение.
Выполните те же действия с теми же Publish Profile
для WebApp2
, WebApp3
и WebApp4
.
Развернутая структура службы приложений Azure в консоли KUDU
Url's
для приложений будет
https://virtualapps29dec.azurewebsites.net/WebApp1
https://virtualapps29dec.azurewebsites.net/WebApp2
https://virtualapps29dec.azurewebsites.net/WebApp3
https://virtualapps29dec.azurewebsites.net/WebApp4
Первоначально, когда я пытался получить доступ к приложениям, я получил следующую ошибку.
Когда я проверяю Web.config
развернутых приложений, я вижу приведенный ниже код.
<?xml version = "1.0" encoding = "utf-8"?>
<configuration>
<location path = "." inheritInChildApplications = "false">
<system.webServer>
<handlers>
<add name = "aspNetCore" path = "*" verb = "*" modules = "AspNetCoreModuleV2" resourceType = "Unspecified" />
</handlers>
<aspNetCore processPath = "dotnet" arguments = ".\WebApp2.dll" stdoutLogEnabled = "false" stdoutLogFile = "\\?\%home%\LogFiles\stdout" hostingModel = "inprocess" />
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: c238430b-40de-45d7-bbb7-ad96da7c4dc4-->
AspNetCoreModuleV2
не разрешает использование нескольких внутрипроцессных виртуальных приложений в рамках одного плана обслуживания приложений.
Я решил проблему, заменив AspNetCoreModuleV2
на AspNetCoreModule
Отредактируйте все файлы Web.config
в развернутых приложениях.
Выход :
Ух ты! Какой исчерпывающий ответ .. Большое спасибо, Харшита. Я видел кусочки и кусочки, но никто не собирал их воедино так, как ты. Мне еще предстоит пройти через это, но это, очевидно, ответ! Я проверю и подтвержу, что мне удалось продублировать результаты!