Основное приложение asp.net, развернутое на iis, соответствует 500 ошибкам внутреннего сервера
:( Упс. 500 - внутренняя ошибка сервера Произошла ошибка при запуске приложения.
Это сообщение появилось, когда я добавил функциональность базы данных в мое основное приложение asp.net и развернул его в iis. Когда я разработал его в Visual Studio, все прошло хорошо. Но после развертывания появились сообщения об ошибках.
Я попытался использовать dotnet myapp.dll
для запуска моего приложения в папке развертывания и выяснил, что он работает хорошо. Вероятно, проблема связана с iis. Я попытался добавить <compilation debug="true">..</compilation>
в web.config, но это кажется бесполезным. Какова проблема на самом деле, или есть ли другой способ увидеть подробную информацию об ошибке, чтобы узнать, что произошло?
Ответы
Ответ 1
-
Измените stdoutLogEnabled = "false" на true, а затем проверьте журналы на stdoutLogFile = ".\logs\stdout". Ошибка там может что-то сказать.
-
Убедитесь, что вы установили правильное имя среды, используя переменную среды ASPNETCORE_ENVIRONMENT, так как используйте правильные настройки, такие как строка подключения. На вашей машине по умолчанию у вас есть среда разработки.
-
Вы можете использовать "Обработка ошибок" для отображения исключений, таких как
app.UseDeveloperExceptionPage();
Ответ 2
Была такая же проблема. Вот руководство , которое помогло мне. Обратите внимание, что я не хотел устанавливать "Runtime" на веб-сервере, а развернул все необходимые файлы как отдельное приложение. Ниже приведены шаги в более сокращенной форме:
На вашем локальном ПК определите, какую версию опубликовать, основываясь на вашем сервере. Я ориентировался на Windows Server 2008, R2, что означало, что мне нужно было опубликовать win7-x64
. Откройте командную строку в каталоге вашего проекта и введите следующую команду:
dotnet опубликовать -c выпуск -r win7-x64
Это создаст папку публикации, содержащую сотни dll,.exe и web.config, расположенную здесь: bin\Release\netcoreapp2.0\publish
На веб-сервере с IIS перейдите на эту целевую страницу. Нажмите на ссылку для желаемой версии. Найдите ссылку для среды выполнения и пакета хостинга. Нажмите, чтобы загрузить и запустить.
Перезапустите IIS, запустив его из командной строки с повышенными правами:
net stop was
net start w3svc
Скопируйте все файлы в локальной папке публикации в нужную папку приложения на сервере IIS.
На сервере откройте IIS и создайте отдельный AppPool и Application, как обычно. Для AppPool в разделе "Основные параметры" измените версию .NET Framework на Нет управляемого кода. Убедитесь, что приложение в IIS указывает на нужную папку и соответствующий AppPool.
Протестируйте свое веб-приложение в браузере.
Ответ 3
В моем случае я получил это, потому что на самом деле я не установил последний "DotNetCore.2.0.0-WindowsHosting.exe" на сервере Windows, на котором я его запускал... так что он отлично работал на моем локальном машина в отладке и ошибка пять hundy'ing на сервере.
У меня были другие нетривиальные проблемы с исправлением проблемы с обновлением... Я бы посоветовал избежать этого, если вы можете.
Ответ 4
Комментарий Mark333 ниже решил мою проблему.
Цитата для удобства чтения:
"Я использую обычную публикацию, предоставляемую Visual Studio. И я только что узнал, что использование последней версии Hosting Bundle решит проблему. +1 на этом microsoft.com/net/download/dotnet-core/runtime- 2.1.0-rc1"
Мне пришлось установить для 1.1, так как мое приложение немного старше, но Hosting Bundle это исправил. В моем случае мы развертываем образ Docker для нашей официальной среды, но когда я хочу провести некоторое локальное тестирование, я публикую его и разрешаю локальному IIS его обработать.
Ответ 5
Моя проблема была решена установкой последней версии .netcore: https://dotnet.microsoft.com/download/thank-you/dotnet-runtime-2.2.2-windows-hosting-bundle-installer
https://docs.microsoft.com/pt-br/aspnet/core/host-and-deploy/iis/index?view=aspnetcore-2.2#install-the-net-core-hosting-bundle
Ответ 6
Я установил DotNetCore.2.0.5-WindowsHosting.exe
на машине стандарта Windows 2008 R2 Standard и столкнулся с той же ошибкой http 500. Запись не помогла (пустые журналы были сгенерированы), а журналы просмотра событий были общим ErrorCode = 0x80070002
)
Мне пришлось сделать две вещи, чтобы решить мою проблему:
- Дайте права на чтение пользователю ApplicationPoolIdentity (EG: IIS APPPOOL\AppPoolIdentityName) в каталог веб-сайта и каталог приложений
- Мне пришлось установить IIS ASP Core под управлением сервера (это было странно, но это сработало!)
Ответ 7
Я была такая же проблема.
Моя проблема заключалась в том, что моя строка подключения к БД не была установлена в appsettings.production.json
И внутренняя ошибка сервера 500 была смутным сообщением об ошибке.
Изменение stdoutLogEnabled = true ничего не сделало для меня, поэтому я не вижу никакой информации об ошибке.
Ответ 8
Я испытал эту проблему. Проблема была из-за моего локального экземпляра Sql Server. Удаленное соединение не было разрешено. Таким образом, я вручную перезапустил экземпляр SQL, и мое приложение перезапустилось нормально.