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