Настройка приложения 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.

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

В службе приложений на экземплярах Windows уже установлены все поддерживаемые версии .NET Framework. Чтобы показать доступные вам версии среды выполнения .NET Framework и SDK, перейдите к https://<app-name>.scm.azurewebsites.net/DebugConsole и выполните соответствующую команду в консоли на основе браузера:

Для версий среды выполнения 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 (v2.0 означает CLR 2):

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

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

В службе приложений вы можете установить параметры приложения и строки подключения вне кода приложения. Затем вы можете получить к ним доступ в любом классе, используя стандартный шаблон 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 позволяет отлаживать приложение локально, а значение службы приложений позволяет запускать приложение в продукте с рабочими настройками. Строки подключения работают точно так же. Таким образом, вы можете хранить секреты своего приложения вне репозитория кода и получать доступ к соответствующим значениям без изменения кода.

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

Если решение Visual Studio включает несколько проектов, процесс публикации Visual Studio уже включает выбор проекта для развертывания. При развертывании в подсистеме развертывания Службы приложений, например с использованием Git или ZIP с включенной автоматизацией сборки, подсистема развертывания Службы приложений выбирает первый веб-сайт или проект веб-приложения, который оно находит, в качестве приложения Службы приложений. Чтобы указать, какую службу приложений проекта следует использовать, задайте параметр 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 секунд.

Примечание

Вы также можете проверить файлы журнала в браузере на странице https://<app-name>.scm.azurewebsites.net/api/logs/docker.

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

Дополнительные ресурсы