2016-02-06 1 views
3

Я размещаю приложение в IIS 8, которое разработано в ASP.NET 5, MVC 6 и EF7. Я создал API для приложения, доступного через http://localhost/api, и я создал несколько контроллеров для доступа к данным.Ошибка ASP.NET 5 IIS 500 с приложением EF7

Когда я обращаюсь к API из визуальной студии, все работает нормально, и я могу получить данные JSON обратно. Но когда я размещаю приложение IIS 8 и браузер localhost/api/controller, я получаю ошибку 500 в журналах IIS. У меня также есть http platform handler 1.2, установленный на сервере windows r2 2012 r2. Я действительно могу просматривать статические страницы и другие ссылки, такие как localhost/home, но когда я пытаюсь получить доступ к контроллеру api, я возвращаю 500 код ошибки.

Теперь, когда я использую файл web.cmd из приложения для самостоятельного размещения приложения и просмотра , я могу получить данные json обратно, но не с сайта, размещенного на IIS.

Поскольку я не знаю, в чем проблема, я включил Failed request tracing rules, и я смог записать журналы с ошибкой 500. Ниже приведен скриншот:

enter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description here

+0

вы есть эта строка в классе запуска: 'app.UseIISPlatformHandler();'? –

+0

yup, что есть, и я могу просматривать домашнюю страницу приложения, а не 'api/controller'. – Ray

ответ

0

Не получать это от ваших неудачных журналов запросов, но я мог бы предложить обычные подозреваемые, так как вы говорите, он работает за пределами IIS:

  1. Убедитесь, что пул приложений настроен на работу с .NET 5.0 и не установлен в другую среду CLR, например 2.0 или 4.0. (На самом деле удар это, так как контроллеры без API MVC не работал бы вообще в этом случае ...)

  2. Убедитесь, что приложение Пул работает с учетной записью, имеющей достаточные разрешения базы данных, если используется NTLM безопасность с SQL, поскольку контекст выполнения может отличаться при запуске IIS Express от Visual Studio по сравнению с IIS.

Я также хотел бы предложить проверку журналов об ошибках Windows, а не только запросить след ....

+0

В настоящее время пул приложений настроен на версию CLR без управления кодом. Я также жестко кодирую строку соединения в файле startup.cs для SQL-соединения, так как он не использует учетную запись службы Windows для установления соединения. Должен ли я устанавливать идентификатор пула приложений в учетную запись службы или локальную систему? Я не обнаружил ошибок в журналах событий, и именно поэтому я открыл эту проблему здесь. :( – Ray

+0

На самом деле код управления не отображается правильно для ASP.NET 5 в соответствии с этим: http://www.strathweb.com/2015/12/running-asp-net-5-website-on-iis/ Одна вещь, которую вы можете искать в журналах IIS является подкодом для ошибки 500, иногда это имеет больше информации. Ссылка выше ссылается на возможные 500 ошибок ... –

+1

Я бы попытался настроить учетную запись пула приложений для своего пользователя временно, чтобы узнать, не изменилось ли это. .. поскольку у вас скорее всего будет достаточно разрешений ... для prod я бы создал учетную запись службы. –

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