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

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

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

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

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

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

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

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

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

"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.

0 голосов
/ 11 декабря 2018

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

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

  <PropertyGroup>
    <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
  </PropertyGroup>
0 голосов
/ 11 декабря 2018

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

enter image description here

...