Показать страницу с ошибкой ASP.NET 5 в веб-приложении Azure

Я получаю 500 Internal Server Error при развертывании нашего веб-приложения ASP.NET 5 в Azure Web App.

введите описание изображения здесь

Как получить информацию и стек для этого исключения?

Я сделал следующее, но не повезло:

  • Использование страницы диагностики при запуске:

    app.UseErrorPage();

  • Настройка ASPNET_ENV на портале Azure:

Настройки приложения Azure Web App

Использование DNX beta 6.

Ответ 1

Согласно этот пост (спасибо Muhammad), я должен иметь возможность получить ошибку времени выполнения на Azure, отредактировав сервер web.config(совершенно верно, Кельт).

К сожалению, это не сработало - никаких подробных исключений.

Я немного погубил и нашел эти журналы "Подробный журнал":

Подробные ошибки

Это то, что они содержали:

Ошибка HTTP 500.0 - Внутренняя ошибка сервера

Похоже, что при попытке разрешить favicon.ico в D:\home\site\wwwroot\favicon.ico что-то может быть не так.

В этом месте действительно нет значка. Я исправил это, но все тот же вопрос. На самом деле, у меня никогда не было знака, и это работало.

В конце концов, я удалил все веб-приложение на портале Azure и переиздал... TADA, он работает снова.

Ответ 2

В случае, если это помогает кому-то, я узнал, что если вы используете ASP.NET RC1, и используете Azure WebApps и добавляете параметр приложения под названием Hosting:Environment со значением development трассировки стека для ошибок сервера 500.

введите описание изображения здесь

Для этого для метода Configure в Startup.cs необходимо использовать страницу "Исключение разработчика", когда вы используете среду разработки. Например:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseDatabaseErrorPage();
    }

    // etc
}

Ответ 3

Когда вы получаете HTTP 500 из Azure Web Application, работающего на ASP.NET 5, и вы не можете получить подробный вывод ошибки, по моему опыту это по одной из двух причин:

  • Ваш Startup.cs вызывает проблему
  • Время выполнения не может быть загружено

Для решения проблемы с первым типом вам лучше всего написать обработчик ошибок, в котором где-то будут записываться ошибки запуска (мы используем Raygun.io для этого, ваши потребности и предпочтения должны определять ваше решение).

Для второго рода лучшее, что я придумал, - это функция Диагностики веб-сайтов - вы можете получить доступ к журналам событий Windows Server, которые расскажут вам, запущена ли ваша среда выполнения.

Ответ 4

Попробуйте отключить режим customErrors в файле Web.config следующим образом:

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

Ответ 5

У вашего startup.cs есть некоторый код времени выполнения, который не играет хорошо с Azure. Принудите страницу для разработчиков, предназначенную для удаления, с помощью перемещения app.UseDeveloperExceptionPage(); к началу настройки (...). Опубликовать обновленный код для Azure, перезагрузить домашнюю страницу и исключение теперь будут полезны.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
     {
          app.UseDeveloperExceptionPage();
      ...
     }

Ответ 6

У меня были точно такие же проблемы - всегда получалось 500 и никогда не видел крошечного журнала или информации, что было не так. Даже после комментирования всего в Startup.cs и простого доступа к статическим файлам я получал 500 (хотя, как ни удивительно, статический файл был правильно загружен, он изменился с публикации на публикацию того же приложения).

Я предполагаю, что некоторые файлы были повреждены в моем развертывании, и azure не обнаружил его. Или, возможно, на сервере остались некоторые файлы, которые вызвали конфликты во время выполнения. В следующий раз, думаю, также стоит изменить профиль публикации, чтобы не хранить дополнительные файлы на сервере (по умолчанию они не удаляются).

Я закончил удаление и повторное создание приложения, которое решило проблему.

Ответ 7

Если вы все еще находитесь в старых версиях стека DNX, как я (используя бета5, который поставляется с Visual Studio 2015), у них была настройка, которая не была хорошо документирована. Я считаю, что это изменилось с тех пор, но вот что вам нужно было разместить в вашем web.config:

  <appSettings>
    <add key="ASPNET_DETAILED_ERRORS" value="true" />
  </appSettings>