Показать страницу с ошибкой ASP.NET 5 в веб-приложении Azure
Я получаю 500 Internal Server Error при развертывании нашего веб-приложения ASP.NET 5 в Azure Web App.
![введите описание изображения здесь]()
Как получить информацию и стек для этого исключения?
Я сделал следующее, но не повезло:
![Настройки приложения 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>