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.
Подробнее: