Я разместил свое приложение ASP.NET Core на ИИС (используя метод публикации в папке). Я попытался создать свой собственный файл web.config, чтобы увидеть подробные сообщения об ошибках на стороне клиента. Поэтому я добавил файл web.config:
<configuration>
<system.web>
<customErrors mode = "Off" />
</system.web>
<system.webServer>
<httpErrors errorMode = "Detailed" />
</system.webServer>
</configuration>
После перезапуска IIS ничего не произошло. Клиенты по-прежнему получали ошибку по умолчанию:
Можно ли как-то получить дополнительную информацию об ошибках с помощью файла web.config?
Вы можете настроить его в своем Startup.cs
файле. По умолчанию он показывает страницу исключений для разработчиков только в режиме разработки:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
Если вы замените эту часть только на app.UseDeveloperExceptionPage();
, она всегда будет отображать подробное сообщение об ошибке.
Вы можете прочитать больше об этом здесь: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling?view=aspnetcore-2.1
да, я знаю об этом. но у меня есть конкретный случай, когда я не могу изменить какие-либо файлы .cs в приложении. Например, вы можете добавить "nativeDebugging": true в файл launchSettings.json, и DeveloperExceptionPage будет автоматически включаться при отладке приложения в Visual Studio. Можно ли как-то включить эту опцию использовать только web.config?
Если вы проверите ссылку, вы увидите, что «ASP.NET Core считывает переменную среды ASPNETCORE_ENVIRONMENT при запуске приложения», поэтому, если вы set ASPNETCORE_ENVIRONMENT=Development
в командной строке, это должно работать.
web.config
<system.webServer>
<httpErrors errorMode = "Detailed" />
<aspNetCore processPath = "dotnet">
<environmentVariables>
<environmentVariable name = "ASPNETCORE_DETAILEDERRORS" value = "true" />
</environmentVariables>
</aspNetCore>
</system.webServer>
Объяснение было бы в порядке. Например, другой ответ утверждает, что не работает. Пожалуйста, ответьте с помощью редактирование вашего ответа, а не здесь, в комментариях (без "Редактировать:", "Обновить:" или подобное - ответ должен выглядеть так, как будто он был написан сегодня).
Для меня включение ASPNETCORE_DETAILEDERRORS ничего не дало, но сработало изменение ASPNETCORE_ENVIRONMENT:
<environmentVariables>
<environmentVariable name = "ASPNETCORE_ENVIRONMENT" value = "Development" />
</environmentVariables>
Дополнительная информация: Включить страницу исключений для разработчиков
web.conf
<system.webServer>
<httpErrors errorMode = "Detailed" />
<aspNetCore processPath = "dotnet" arguments = ".\DocExpressManager.Web.dll" stdoutLogEnabled = "true" stdoutLogFile = ".\logs\stdout" hostingModel = "inprocess">
<environmentVariables>
<environmentVariable name = "ASPNETCORE_ENVIRONMENT" value = "Development" />
<environmentVariable name = "ASPNETCORE_DETAILEDERRORS" value = "true" />
</environmentVariables>
</aspNetCore>
</system.webServer>
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать добавьте дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.
Обратите внимание, что
system.web
применяется только к ASP.NET, а не к ASP.NET Core, аsystem.webServer
применяется к IIS. Ни один из них не является тем, что вы должны использовать, как указано в ответе.