Основное приложение 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" на веб-сервере, а развернул все необходимые файлы как отдельное приложение. Ниже приведены шаги в более сокращенной форме:

  1. На вашем локальном ПК определите, какую версию опубликовать, основываясь на вашем сервере. Я ориентировался на Windows Server 2008, R2, что означало, что мне нужно было опубликовать win7-x64. Откройте командную строку в каталоге вашего проекта и введите следующую команду:

    dotnet опубликовать -c выпуск -r win7-x64

    Это создаст папку публикации, содержащую сотни dll,.exe и web.config, расположенную здесь: bin\Release\netcoreapp2.0\publish

  2. На веб-сервере с IIS перейдите на эту целевую страницу. Нажмите на ссылку для желаемой версии. Найдите ссылку для среды выполнения и пакета хостинга. Нажмите, чтобы загрузить и запустить.

  3. Перезапустите IIS, запустив его из командной строки с повышенными правами:

    net stop was

    net start w3svc

  4. Скопируйте все файлы в локальной папке публикации в нужную папку приложения на сервере IIS.

  5. На сервере откройте IIS и создайте отдельный AppPool и Application, как обычно. Для AppPool в разделе "Основные параметры" измените версию .NET Framework на Нет управляемого кода. Убедитесь, что приложение в IIS указывает на нужную папку и соответствующий AppPool.

  6. Протестируйте свое веб-приложение в браузере.

Ответ 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 его обработать.

Ответ 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, и мое приложение перезапустилось нормально.