#c# #asp.net-core
#c# #asp.net-core
Вопрос:
У меня есть довольно простой веб-сайт, с которым я играю, используя ASP.NET Ядро. Я запускаю приложение из командной строки, и веб-сайт возвращает статические файлы, но я продолжаю получать 500 ошибок при попытке отправить запрос, который должен обрабатываться MVC. Как мне увидеть, в чем заключается ошибка? Отображается ли ошибка в браузере или регистрируется на консоли, не имеет значения, я просто хочу способ увидеть, в чем заключается ошибка.
Ответ №1:
Добавьте промежуточное программное обеспечение страницы ошибок, как показано здесь:
app.UseDeveloperExceptionPage();
Комментарии:
1. В каком пространстве имен находится UseErrorPage? Я добавил Microsoft. Собственный для моего asp.net веб-проект vnext, но нет UseErrorPage. Это то, что есть в MSDN msdn.microsoft.com/en-us/library/dn253556 (v = против113).aspx
2.
Microsoft.AspNet.Diagnostics
. Смотрите github.com/aspnet/Diagnostics/tree/dev/src /…3. Эта опция удалена с beta5-6
4. @Highmastdon это вернулось? теперь это есть! docs.asp.net/en/latest/fundamentals/error-handling.html
5. !!Убедитесь, что app.UseDeveloperExceptionPage(); находится в САМОМ НАЧАЛЕ раздела Настройки Startup.cs!!
Ответ №2:
Обновление для beta8:
В beta8 Microsoft изменила название на UseDeveloperExceptionPage
. Итак, если вы хотите использовать страницу ошибок, вызовите:
app.UseDeveloperExceptionPage();
Вот ссылка на соответствующую проблему с Github.
ErrorPageOptions
Они такие же, как в beta6 / 7.
Вы можете использовать
app.UseErrorPage(ErrorPageOptions.ShowAll)
до beta5 из Asp.Net Mvc.
Начиная с beta6, ErrorPageOptions.ShowAll
была удалена. Теперь вы можете использовать версию без параметров
app.UseErrorPage();
или создайте объект ErrorPageOptions и укажите, сколько строк вокруг ошибки вы хотите отобразить, установив SourceCodeLineCount.
app.UseErrorPage(new ErrorPageOptions() {SourceCodeLineCount = 100});
Дополнительная информация
Они удалили несколько свойств ErrorPageOptions
в этом коммите.
Перед:
public class ErrorPageOptions
{
private bool _defaultVisibility;
private bool? _showExceptionDetails;
private bool? _showSourceCode;
private bool? _showQuery;
private bool? _showCookies;
private bool? _showHeaders;
private bool? _showEnvironment;
...
}
После:
public class ErrorPageOptions
{
public int SourceCodeLineCount { get; set; }
public IFileProvider FileProvider { get; set; }
...
}
Итак, теперь вы можете указать только, сколько строк исходного кода печатается.
Комментарии:
1. Это должно быть изменено снова, поскольку я использую beta7, и у меня есть опции для showExceptionDetails, showSourceCode и т.д., А также SourceCodeLineCount
2. У вас есть? Вы уверены, что используете beta7? Я просмотрел его исходный код на Github несколько дней назад и нашел только код, который я разместил здесь. Но, тем не менее, я еще раз взгляну на это
3. @user2736022 Я проверил еще раз, у меня нет такой опции в beta7. Не могли бы вы опубликовать какой-нибудь код, в котором вы используете ErrorPageOptions и какие пространства имен вы включаете?
4. В бета-версии 8 и Visual studio 2015 это теперь добавляется по умолчанию в Startup.cs, если (env.IsDevelopment())
Ответ №3:
Если вас не волнует, что сведения о вашей ошибке будут доступны всему миру, вы можете включить сведения об ошибке прямо в браузере без каких-либо изменений кода. (Это было протестировано только в IIS 8.5
):
- В
IIS Manager
, в левойConnections
части, щелкните левой кнопкой мыши выберите свойSite
. - В правой части
Feature View
откройтеError Pages
. - В крайнем правом
Actions
разделе нажмите наEdit Feature Settings
- Затем в
Error Responses
выберите 2-й,Detailed errors
Ok
вариант (или, если вы беспокоитесь о том, чтобы выставить материал на всеобщее обозрение, начните с 3-го варианта, если вы можете открыть локальный браузер… т.е. localhost: …)
Этого должно быть достаточно, чтобы вы могли увидеть точную ошибку… Важно: Если вам пришлось использовать среднюю Detailed errors
опцию, обязательно отключите ее после отладки проблемы. Это может дать хакеру все, что ему нужно для взлома вашего сервера.
Комментарии:
1. Это очень удобно, когда вам не нужно повторно развертывать свой сайт.
Ответ №4:
Если не важно сообщать миру подробности ошибки, то вы можете активировать подробную страницу ошибки в web.config.
Просто добавьте <customErrors mode="Off"/>
в <configuration>
/ <system.web>
вашего файла web.config, расположенного в корневой папке вашего веб-сайта.
Для более подробного объяснения: Как использовать пользовательские ошибки Web.Config для ASP.NET
Преимущество этого в том, что вам не нужно повторно развертывать свой сайт
Комментарии:
1. Это не имеет отношения к вопросу OP. Он использует .NET Core, и ваш ответ для ASP.NET
2. Это также работает для ASP.Net настройки. web.config имеют приоритет. Я бы не стал этого делать, хотя это кажется плохой практикой… или, по крайней мере, уродливые.