Настройка приложения ASP.NET для службы приложений Azure

Примечание.

Сведения о ASP.NET Core см. в разделе "Настройка приложения ASP.NET Core" для службы приложений Azure. Если приложение ASP.NET работает в пользовательском контейнере Windows или Linux, см. статью "Настройка пользовательского контейнера для службы приложений Azure".

Приложения ASP.NET необходимо развертывать в службе приложений Azure как скомпилированные двоичные файлы. Средство публикации Visual Studio создает решение, а затем развертывает скомпилированные двоичные файлы напрямую. Модуль развертывания Службы приложений развертывает репозиторий кода сначала, а затем компилирует двоичные файлы.

В этом руководстве представлены ключевые концепции и инструкции для разработчиков ASP.NET. Если эта статья является первым опытом работы со службой приложений Azure, сначала выполните развертывание веб-приложения ASP.NET и развертывание приложения ASP.NET с помощью базы данных SQL Azure в Azure .

Показать поддерживаемые версии среды выполнения .NET Framework

В службе приложений на экземплярах Windows уже установлены все поддерживаемые версии .NET Framework. Чтобы отобразить доступные для вас версии среды выполнения и пакета SDK для .NET Framework, перейдите к приложению на портале Azure. Выберите Средства разработки>расширенные средства. Нажмите кнопку "Перейти". В Kudu выберите консоль отладки для CMD или PowerShell. Выполните соответствующую команду в консоли на основе браузера:

Для версий среды выполнения CLR 4 (.NET Framework 4 и выше):

ls "D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework"

Последняя версия .NET Framework может быть недоступна сразу.

Для версий среды выполнения CLR 2 (.NET Framework 3.5 и ниже):

ls "D:\Program Files (x86)\Reference Assemblies\Microsoft\Framework"

Если среда выполнения вашего приложения не поддерживается, его можно развернуть с помощью пользовательского контейнера.

Показать текущую версию среды выполнения .NET Framework

Выполните следующую команду в Cloud Shell:

az webapp config show --resource-group <resource-group-name> --name <app-name> --query netFrameworkVersion

Значение v4.0 означает, что используется последняя версия CLR 4 (.NET Framework 4.x). Значение v2.0 означает, что используется версия CLR 2 (.NET Framework 3.5).

Установить версию среды выполнения .NET Framework

По умолчанию служба приложений использует последнюю поддерживаемую версию .NET Framework для запуска вашего приложения ASP.NET. Чтобы запустить приложение с помощью .NET Framework 3.5, выполните следующую команду в Cloud Shell (версия 2.0 означает CLR 2):

az webapp config set --resource-group <resource-group-name> --name <app-name> --net-framework-version v2.0

Что происходит с устаревшими средами выполнения в службе приложений?

Устаревшие среды выполнения не рекомендуется поддерживать организацию или имеют значительные уязвимости. Соответственно, они удаляются из страниц создания и настройки на портале. Если устаревшая среда выполнения скрыта на портале, любое приложение, которое по-прежнему используется этой средой выполнения, продолжает выполняться.

Если вы хотите создать приложение с устаревшей версией среды выполнения, которая больше не отображается на портале, используйте Azure CLI, шаблон ARM или Bicep. Эти варианты развертывания позволяют создавать устаревшие среды выполнения, удаленные с портала, но по-прежнему поддерживаются.

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

Доступ к переменным среды

В службе приложений можно задать параметры приложения и строки подключения за пределами кода приложения. Затем вы можете получить к ним доступ в любом классе, используя стандартный шаблон ASP.NET:

using System.Configuration;
...
// Get an app setting
ConfigurationManager.AppSettings["MySetting"];
// Get a connection string
ConfigurationManager.ConnectionStrings["MyConnection"];
}

Если настроить параметр приложения с тем же именем в Службе приложений и в web.config, значение службы приложений имеет приоритет над значением web.config . Локальное web.config значение позволяет локально отлаживать приложение. Значение службы приложений позволяет запускать приложение в продукте с параметрами рабочей среды. Строки подключения работают точно так же. Таким образом, вы можете хранить секреты своего приложения вне репозитория кода и получать доступ к соответствующим значениям без изменения кода.

Примечание.

Рассмотрите более безопасные параметры подключения, которые не требуют секретов подключения вообще. Дополнительные сведения см. в статье "Безопасное подключение к службам и базам данных Azure" из службы приложений Azure.

Развертывание многопроектных решений

Если решение Visual Studio включает несколько проектов, процесс публикации Visual Studio включает выбор проекта для развертывания. При развертывании в модуле развертывания службы приложений Azure, например с помощью Git или с zip-развертыванием при включенной автоматизации сборки, модуль развертывания службы приложений Azure выбирает первый веб-сайт или проект веб-приложения, который он находит, как приложение службы. Чтобы указать, какую службу приложений проекта следует использовать, задайте параметр PROJECT приложения. Например, выполните следующую команду в Cloud Shell:

az webapp config appsettings set --resource-group <resource-group-name> --name <app-name> --settings PROJECT="<project-name>/<project-name>.csproj"

Получить подробную страницу исключений

Когда приложение ASP.NET создает исключение в отладчике Visual Studio, браузер отображает подробную страницу исключений. Универсальное сообщение об ошибке заменяет страницу в службе приложений. Чтобы отобразить подробную страницу исключений в Службе приложений, откройте файлweb.config и добавьте элемент <customErrors mode="Off"/> под элементом <system.web>. Например:

<system.web>
    <customErrors mode="Off"/>
</system.web>

Повторно разверните ваше приложение с обновленным web.config. Теперь вы увидите ту же самую подробную страницу исключений.

Доступ к журналам диагностики

Вы можете добавлять диагностические сообщения в код приложения с помощью System.Diagnostics.Trace. Например:

Trace.TraceError("Record not found!"); // Error trace
Trace.TraceWarning("Possible data loss"); // Warning trace
Trace.TraceInformation("GET /Home/Index"); // Information trace

Чтобы получить доступ к журналам консоли, созданным из кода приложения в Службе приложений, включите ведение журнала диагностики, выполнив следующую команду в Cloud Shell:

az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose

Возможные значения для --level: Error, Warning, Info и Verbose. Каждый последующий уровень включает предыдущий уровень. Например, Error включает только сообщения об ошибках. Verbose включает все сообщения.

После включения ведения журнала диагностики выполните следующую команду, чтобы просмотреть поток журналов:

az webapp log tail --resource-group <resource-group-name> --name <app-name>

Если журналы консоли не отображаются немедленно, повторите попытку через 30 секунд.

Чтобы остановить потоковую передачу журналов в любое время, нажмите клавиши CTRL+C.