2016-02-26 2 views
18

После публикации веб-приложения ASP.NET я пытаюсь разместить веб-сайт на своем локальном сервере. Однако, когда я запускаю его, он дает мне эту ошибку в моем браузере:ASP.NET 5 Произошла ошибка при запуске приложения

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

Как я могу отладить эту ошибку? Веб-сайт работает (как в настройках Debug, так и Release) при запуске с использованием IISExpress и «web» в Visual Studio.

Я использую среду разработки, и я уже указал app.UseDeveloperExceptionPage();.

Я выполнил инструкции here для развертывания в IIS.

Я также попробовал предложенное предложение here (повторное опубликование с выбранным «Удалить все существующие файлы до публикации»). (У ОП есть несколько другая ошибка, поэтому я задаю новый вопрос.)

Я искал часы в Интернете, но, похоже, не так много информации об этом. Есть идеи?

Я нахожусь на Windows 7, используя ASP.NET 5 RC1.

+2

Включите журналы протоколов httpPlatform stdout в web.cnfig, чтобы увидеть фактическую ошибку в файле журнала. У меня была ошибка, потому что мои разрешения для БД не были установлены должным образом, и я использовал интегрированную защиту :-) –

+1

@MuqeetKhan Lmao. Я сделал это, и, по-видимому, исключение связано с тем, что не удалось найти файл конфигурации. OOPS. Веб-сайт использует файл конфигурации на основе среды хостинга. Я не знал, что инструмент «Опубликовать» изменил среду хостинга на производство. Я просто предположил, что все еще развивается ... – painiyff

+1

Рад, что это помогло. Не могли бы вы принять ответ, когда у вас есть шанс. Благодаря ! –

ответ

34

Вы должны установить stdoutLogEnabled=true в файле web.config, чтобы увидеть фактическую ошибку, которая происходит. Вы можете указать, где эти файлы записываются с аргументом stdoutLogFile; приведенный ниже пример скриншота записывается в stdoutLogFile=".\logs\stdout". (Вы должны убедиться, что каталог существует, приложение не создаст его)

Что касается неспособности найти нужный файл конфигурации да, то по умолчанию среда является производством. Он установлен для разработки явно в visual studio в свойствах проекта.

Обновление: В AspNetCore RTM модуль называется aspnetCore под узлом system.webServer в web.config. Кроме того, как отметил @ErikE в комментариях, web.config теперь находится в корне проекта, а не под wwwroot, как в предыдущих выпусках.

enter image description here

+1

Можете ли вы рассказать мне, где в Web.config установлен этот параметр? –

+3

в папке wwwroot web.config будет содержать раздел httpPlatform. Этот раздел будет иметь атрибут stdoutLogEnabled. Значение по умолчанию - false, измените его на true. Перезагрузите веб-пул после того, как вы это сделаете, и он выдает сообщение об ошибке, чтобы убить все экземпляры w3wp.exe и dnx.exe в task mgr. –

+0

'web.config' теперь опубликован в родительскую папку' wwwroot', поэтому ищите его в нужном месте! – ErikE

8

Эта ошибка также возникает, когда вы пытаетесь соединение с базой данных от запуска (например, для засева) и он не на сервере развертывания благодаря previleges на Недостаточно высокий уровень сервера базы данных.

+1

Какое-либо лучшее исправление для этого? – MGDavies

+0

как вы узнали, проб и ошибок или вы видели сообщение об ошибке где-то? –

2

Эта ошибка возникает при нескольких условиях. В моей ситуации я правильно не установил строку подключения к базе данных. Я исправил его в Visual Studio 2017 следующим образом:

1) Щелкните правой кнопкой мыши проект, выберите «Опубликовать», откройте страницу «Публикация» в главной области.

2) Выберите вкладку Публикация на левой

3) В разделе Резюме, есть «Настройки ...» ссылка. Нажмите на нее. Откроется диалоговое окно «Опубликовать».

4) Нажмите вкладку «Настройки» слева.

5) Развернуть Файл Параметры публикации, установите флажок «Удалить дополнительные файлы в пункт назначения»

6) разверните узел Базы данных, установите флажок «Использовать эту строку соединения во время выполнения» (Это было предварительно заполняется с моей строки подключения Azure SQL на основе о том, как я изначально настроить свои параметры публикации)

7) Развернуть Entity Framework миграции, установите флажок «Применить эту миграцию на публикацию» (Опять же, строка соединения была предварительно заполненные)

8) Нажмите кнопку Сохранить

9) Опубликовать

10) Скрестите пальцы

+0

Это сработало для меня. Спасибо! –

0

Проблема:, скорее всего, эта ошибка происходит из-за недостатка прав для Application Pool Identities. Для того, чтобы узнать:

Перейти к окнам Task Manager и под Детали tab/Процессы (в зависимости от операционной системы Windows) ищет w3wp.exe и под User name ищет приложения (<App_Pool_Name> обычно DefaultAppPool) работает там как IIS Worker Process. Если ваше приложение не указано в списке, приложение имеет недостаточные права на доступ к вашей базе данных.

Чтобы это исправить: сделать следующее и дать полный доступ к App:

Перейти к вашему среды SQL Server Management Studio, и Войти, как Администратора открыта безопасности>Логинов> правых нажмите логины и добавить New Login в:

Под Общие:

  • для Login Name:ВведитеIIS APPPOOL\<App_Pool_Name> обычно DefaultAppPool

  • для Default Database: точки к <Your_App_Database>

Под Mapping пользователя:

  • на коробке 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

НажмитеOK

Теперь попытайтесь получить доступ к App и он должен работать !!!

Смежные вопросы