Подтвердить что ты не робот

ASP.NET Core хостинг - 500 внутренних ошибок сервера

Я пытаюсь опубликовать как ASP.NET Core проект с хостинг-провайдером, который поддерживает ASP.NET Core. Я получаю 500 внутренних ошибок сервера, которые я считаю очень распространенными. Поэтому я искал в Интернете и на различных форумах, а затем проверил processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" в web.config, и они выглядят корректно с помощью processPath="dotnet" and arguments=".\MyApplication.dll".

Я также проверил строку подключения, и она указывает на рабочий сервер БД, который работает. Я подтвердил соединение с БД, изменив строку подключения на производственную БД и запустив локальный проект. Это работает, и я получаю доступ к производственной БД.

Я также попытался получить информацию об ошибке, используя приведенный ниже файл Startup.cs (независимо от env):

app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();

Я также включил stdoutLog в web.config, но и этой папки не вижу:

stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout"

Я также пытался изменить applicationUrl и launchUrl в файле launchSettings.json на свой URL-адрес, но это не сработало.

Итак, 500 Internal Server Error отказывается исчезать, и у меня до сих пор нет полезного сообщения об ошибке. Страница просто говорит:

К сожалению. внутренняя ошибка сервера 500 Произошла ошибка при запуске приложения.

Я был бы очень признателен, если бы кто-то мог помочь мне здесь.

4b9b3361

Ответ 1

Я также включил stdoutLog в web.config, но я не вижу эту папку:

stdoutLogEnabled = "true" stdoutLogFile = ".\logs\stdout"

Здесь есть один трюк: вы должны создать обе папки logs и stdout вручную - тогда и только тогда IIS создаст файл журнала внутри папки logs (не stdout, как вы могли бы ожидать) спросите меня, почему, потому что я не знаю, почему;)


К сожалению. 500 Внутренняя ошибка сервера Ошибка при запуске приложения.

Обычно, проблемы с конфигурацией в Startup.cs - наиболее распространенные проблемы включают проблему с самим БД, проблему с миграциями (если вы используете подход Code First), проблемы с appsettings.js, проблемы с Social Logins учетные данные (например, отсутствует SecretKey)...

Обратитесь к файлу журнала в .\logs\stdout - это самый быстрый способ найти сведения о проблеме:)


app.UseDeveloperExceptionPage();

app.UseDatabaseErrorPage();

Те будут работать после полного запуска вашего WebApp, но не при запуске приложения.

Ответ 2

Спасибо Лукасу за его комментарии. Я смог просмотреть журнал, и он заявил, что необходимо указать параметр ClientId. Проблема была в UserSecrets. Поскольку secrets.json доступен только в Development, в Production не было секретов. Как только у меня были секреты в моем appSettings.json, он работал нормально.

Кроме того, Чтобы реплицировать это в локальной среде, просто перейдите в свойства проекта и измените переменную окружения ASPNETCORE_ENVIRONMENT на "Production" и запустите на локальном компьютере. Это приведет к репликации ошибки внутреннего внутреннего сервера 500, и вы получите сообщение об ошибке.

Ответ 3

Я хотел бы добавить дополнительную информацию в ответ @Lukasz Makowej.

Я узнал причину, по которой нужно создать папку, в документации Microsoft говорится, что:

stdoutLogFile - Необязательный строковый атрибут.

"..... Любые папки, указанные в пути, должны существовать, чтобы модуль мог создать файл журнала..."

Поэтому вы должны создать его самостоятельно :) Проверьте это здесь:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.0

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

Ответ 5

Убедитесь, что ваш web.config хорош. Меня не раз топал синтаксически хороший web.config, ссылающийся на модуль (Rewrite), которого не было на сервере. Никаких сообщений об ошибках нигде, кроме 500 ошибок ответа.

Ответ 6

Журнал Std не работал для меня, мне пришлось удалить все версии.ent Core runtime/SDK с сервера и моего локального, чтобы установить последнюю версию, и она работала после публикации всего с нуля.

Еще одна вещь, которая помогла, - привязать приложение IIS к порту 5000 без каких-либо dns, чтобы он действительно показывал мне ошибки на http://localhost: 5000

Ответ 7

в файле web.config изменить модули = "AspNetCoreModuleV2" на модули = "AspNetCoreModule"

и посмотрите это видео https://www.youtube.com/watch?v=clCR3k6kkD8