it-swarm.com.ru

Развертывание простого веб-приложения ASP.NET Core 2.2 в Azure с использованием Web Deploy приводит к ошибке

Я решил опубликовать основное веб-приложение asp.net с помощью Azure через экран «Публикация» в Visual Studio 2017. Я использовал все значения по умолчанию, но мое приложение использует миграции, поэтому мне пришлось указать, чтобы они запускались в профиле публикации.

Когда я пытаюсь получить доступ к сайту, я получаю:
Невозможно отобразить страницу, поскольку произошла внутренняя ошибка сервера.

Я чувствую, что мне нужно что-то сделать со строкой соединения и переменной ASPNETCORE_ENVIRONMENT.

У меня все еще есть стандартные appsettings.json и appsettings.Development.json, которые вы получаете при создании нового основного веб-приложения asp.net. Appsettings.json указывает на мою локальную базу данных для разработки, а appsettings.Development.json указывает на базу данных Azure из профиля публикации.

Или профиль публикации автоматически позаботится о строке подключения, и мне не нужно делать ничего из вышеперечисленного?

8
Blake Rivell

По умолчанию приложения ASP.NET Core 2.2 настроены на использование новой модели хостинга In Process. Это не будет доступно на Azure во всех регионах до декабря 2018 года. Они упоминают об этом здесь .

Решением на данный момент является добавление следующего в начало файла .csproj вашего веб-приложения:

  <PropertyGroup>
    <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
  </PropertyGroup>
19
Blake Rivell

Одним из простых решений было бы поместить строку соединения Azure-db в appsettings.json вместо appsettings.Development.json.

При запуске сгенерированного по умолчанию основного приложения asp.net в VS2017 вы можете найти файл launchSettings.Json в папке Properties с профилями, которые будут запускаться локально . Там, в разделе профилей, вы можете видеть, что установлено свойство ASPNETCORE_ENVIRONMENT к разработка .

"WebApp": {
  "commandName": "Project",
  "launchBrowser": true,
  "applicationUrl": "http://localhost:5000",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
}

Это означает, что если вы определите локальную строку подключения БД в вашем appsettings.Development.json, она будет использовать свою строку подключения при локальном запуске.

Если вы не определите свойство ASPNETCORE_ENVIRONMENT, тогда среда выполнения будет использовать только значения appsettings.json (среда выполнения установит ASPNETCORE_ENVIRONMENT в Production по умолчанию, но если у вас нет никакого определенного appsettings.Production.json, тогда только значения в appSettings.json будет использоваться).

Поэтому при запуске веб-приложения Azure вам вообще не нужно указывать ASPNETCORE_ENVIRONMENT, если вы вставили строку соединения Azure-db в appsettings.json.

1
Marcus Höglund

Вы можете проверить и настроить параметры своего приложения и строки подключения в разделе Application settings вашей службы:

 enter image description here

1
Michael