ASP.NET 5 Произошла ошибка при запуске приложения
После публикации веб-приложения ASP.NET я пытаюсь разместить веб-сайт на своем локальном сервере. Однако, когда я запускаю его, он дает мне эту ошибку в моем браузере:
К сожалению. 500 Внутренняя ошибка сервера Ошибка при запуске приложение.
Как я могу отладить, что это за ошибка? Веб-сайт работает (как в настройках Debug, так и в Release) при запуске с использованием IISExpress и "web" в Visual Studio.
Я использую среду разработки, и я уже указал app.UseDeveloperExceptionPage();
.
Я выполнил инструкции здесь для развертывания в IIS.
Я также попробовал предложенное предложение здесь (повторная публикация с выбранным "Удалить все существующие файлы до публикации" ). (У ОП есть несколько другая ошибка, поэтому я задаю новый вопрос.)
Я искал часы в Интернете, но, похоже, не так много информации об этом. Любые идеи?
Я нахожусь в Windows 7, используя ASP.NET 5 RC1.
Ответы
Ответ 1
Вы должны установить stdoutLogEnabled=true
в файле web.config, чтобы увидеть фактическую ошибку, которая происходит. Вы можете указать, где эти файлы записываются с аргументом stdoutLogFile
; приведенный ниже пример скриншота записывается в stdoutLogFile=".\logs\stdout"
. (Вы должны убедиться, что каталог существует, приложение не создаст его)
Что касается того, что вы не можете найти правильный файл конфигурации, то стандартная среда - это производство. Он установлен для разработки явно в visual studio в свойствах проекта.
Обновить. В RTM-сервере AspNetCore модуль называется aspnetCore в файле system.webServer node в web.config. Кроме того, как отметил @ErikE в комментариях, web.config теперь находится в корне проекта, а не под wwwroot, как в предыдущих выпусках.
![введите описание изображения здесь]()
Ответ 2
Эта ошибка также возникает, когда вы пытаетесь подключиться к базе данных при запуске (например, для посева), и она терпит неудачу на сервере развертывания из-за неадекватных преваливаний на сервере базы данных.
Ответ 3
Эта ошибка возникает при нескольких условиях. В моей ситуации я правильно не установил строку подключения к базе данных. Я исправил его в Visual Studio 2017 следующим образом:
1) Щелкните правой кнопкой мыши проект, выберите "Опубликовать", откройте страницу "Опубликовать" в главной области.
2) Выберите вкладку "Опубликовать" слева
3) В разделе "Сводка" есть ссылка "Настройки...". Нажмите на нее. Откроется диалоговое окно "Опубликовать".
4) Нажмите вкладку "Настройки" слева.
5) Разверните параметры публикации файла, установите флажок "Удалить дополнительные файлы в пункте назначения"
6) Разверните "Базы данных", установите флажок "Использовать эту строку соединения во время выполнения" (это было предварительно заполнено моей строкой подключения Azure SQL на основе того, как я первоначально настроил параметры публикации)
7) Разверните Entity Framework Migrations, установите флажок "Применить эту миграцию при публикации" (опять же, строка подключения была предварительно заполнена)
8) Нажмите "Сохранить"
9) Опубликовать
10) Перекрестите пальцы
Ответ 4
Проблема: Скорее всего, эта ошибка вызвана недостаточными привилегиями для Application Pool Identities
. Чтобы узнать:
Перейдите в окно Диспетчер задач и под вкладкой "Сведения" / "Процессы" (в зависимости от ОС Windows) найдите w3wp.exe
и под User name
найдите свое приложение (<App_Pool_Name>
обычно DefaultAppPool
) работает там как IIS Worker Process
. Если ваше приложение не указано в списке, приложение имеет недостаточные права на доступ к вашей базе данных.
Чтобы исправить это: выполните следующие действия и дайте полный доступ к вашему приложению:
Перейдите в SQL Server Management Studio и введите Администратор. Безопасность > Логины > щелкните правой кнопкой мыши Logins и добавьте New Login
:
В разделе Общие:
В разделе Отображение пользователей:
-
на поле Users mapped to this login:
-Отметьте поле "Карта" на <Your_App_Database>
-Пользователь введите IIS APPPOOL\<App_Pool_Name>
обычно DefaultAppPool
-Настройка схемы по умолчанию Введите dbo
-
на поле Database role membership for:
<Your_App_Database>
-Проверьте следующие поля: db_datareader
, db_datawriter
и public
Нажмите ОК
Теперь попробуйте получить доступ к своему приложению, и он должен работать!!!