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

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

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

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

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

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

    app.UseErrorPage();

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

Приложение веб-приложения Azure  настройки

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


person Dave New    schedule 13.08.2015    source источник
comment
Я потратил полдня, пытаясь отладить ошибку 500 в Azure, но безуспешно. Даже до запуска не доходил - так что нет смысла добавлять обработку исключений! Я создал новый проект MVC и развернул его на том же сайте Azure с теми же настройками публикации, и это сработало. Повторно опубликовал неисправный сайт. Та же ошибка 500. В конце концов я создал новый веб-сайт на лазурном сервере и развернул его. Сработало впервые. так в чем была проблема? Это действительно беспокоит меня при развертывании в производственной среде. Нет ошибок, нет способа отладки, нет проблем с кодом или методом / конфигурацией развертывания.   -  person Mark Chidlow    schedule 12.03.2016


Ответы (7)


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

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

Чтобы это работало, метод Configure в Startup.cs должен использовать страницу Developer Exception, когда вы используете среду разработки. Например:

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

    // etc
}
person neodymium    schedule 25.11.2015
comment
Спасибо за обновление старого вопроса. - person Dave New; 25.11.2015
comment
Спасибо, сейчас работает RC1, и это было полезно! - person corkington; 14.12.2015
comment
В Core 1.0.0 добавление параметра Hosting: Environment App в Azure привело к отображению всей ошибки. У меня больше ничего не работало. Спасибо!! - person Kizmar; 18.07.2016
comment
Огромная помощь! Спасибо! - person neverseenjack; 26.09.2016
comment
У меня работает, спасибо! Я переношу приложение .Net core 1.0 на 2.0. Он выдает эту ошибку 500 после попытки перейти к списку пользователей. Я пробовал удаленную отладку, без помощи. настройка папки logs / stdout через web.config, без помощи. это решение простое и полезное. - person Joseph Wu; 15.11.2017
comment
Настройка хостинга: среда с ценностью развития - это все, что мне нужно, чтобы избавиться от приличных ошибок в моем приложении сегодня, не нужно менять код. Большое спасибо за это, меня сводило с ума неспособность увидеть проблему. - person Mike; 16.02.2018

Согласно этому сообщению (спасибо Мухаммаду), я смогу получить ошибку времени выполнения в Azure, отредактировав файл web.config сервера (совершенно верно, Celt).

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

Я немного покопался и нашел эти журналы "DetailError":

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

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

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

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

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

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

person Dave New    schedule 14.08.2015
comment
Фу. Может, мне стоит просто удалить и начать все сначала. Я уже просмотрел все подробные журналы ошибок, включил отладку трассировки и т.д. Ничего не дает мне ответа. - person jessegavin; 14.08.2015
comment
Я все еще борюсь с этими проблемами. Очень неприятно и не интуитивно. - person Dave New; 09.09.2015
comment
Я смог определить причину проблемы, закомментировав весь код в startup.cs, а затем не комментируя отдельные фрагменты, пока не нашел проблемный код. Для меня это стало проблемой со строкой подключения к базе данных. Это была ужасная проблема. - person jessegavin; 09.09.2015
comment
У меня это тоже сработало. Прошло 20 лет, а исправление для большинства продуктов MS все еще либо перезагружается, либо переустанавливается. - person micah; 13.02.2017

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

<system.web>
  <customErrors mode="Off" />
</system.web>
person Celt    schedule 13.08.2015

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

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

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

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

person Rytmis    schedule 14.08.2015
comment
Мне нужно попробовать функцию диагностики. Сначала мне нужно обновить приложение до стандартного. - person jessegavin; 14.08.2015
comment
По вашему опыту, в чем причина того, что среда выполнения не работает - что бы это ни значило ;-)? И какое было решение? Спасибо. - person Mark Chidlow; 12.03.2016
comment
Ну, либо среда выполнения не упакована с приложением, либо это неправильная версия (вы можете легко указать неправильную среду выполнения для публикации dnu) - person Rytmis; 12.03.2016
comment
Кроме того, хороший способ диагностировать ошибки запуска - собрать тот же пакет локально и запустить его через командную строку. - person Rytmis; 12.03.2016

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

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

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

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

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

person nazgul    schedule 21.09.2015

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

  <appSettings>
    <add key="ASPNET_DETAILED_ERRORS" value="true" />
  </appSettings>
person user5632738    schedule 02.12.2015
comment
Почему ты все еще на бета-версии 5? - person Dave New; 03.12.2015