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

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

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

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

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

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

stdoutLogEnabled="true" stdoutLogFile=".logsstdout"

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

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

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

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

4 ответов


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

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

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


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

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

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


app.UseDeveloperExceptionPage ();

app.UseDatabaseErrorPage ();

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


спасибо Лукашу за его комментарии. Я смог увидеть журнал, и он заявил, что"опция ClientId должна быть предоставлена". Проблема была с UserSecrets. С секретов.json доступен только в разработке, в производстве не было найдено секретов. Когда-то у меня были секреты в моих appSettings.json, это сработало отлично.

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


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

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

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

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

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

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

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


кроме того, убедитесь, что ASP.NET установлен основной пакет хостинга Windows Server. Это создает обратный прокси-сервер между IIS и сервером Kestral.

Подробнее:

https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x#tabpanel_tfsY37MhAQ_aspnetcore2x