Публикация сайта MVC 6 с Visual Studio 2015 CTP 6 в IIS

Я пытаюсь опубликовать сайт в IIS, который я разрабатываю с помощью MVC6 (бета-версия 3) с Visual Studio 2015 (CTP 6). У меня настроена публикация для x64-версии KRE. С публикацией все идет хорошо, об ошибках не сообщается, но я вообще не могу запустить сайт.

Первая ошибка заключается в том, что project.json не может быть найден, но я исправил это, добавив ключ value к kre-app-base в web.config, который добавляется в папку wwwroot, поэтому содержимое:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="kpm-package-path" value="..\approot\packages" />
    <add key="bootstrapper-version" value="1.0.0-beta3" />
    <add key="runtime-path" value="..\approot\packages" />
    <add key="kre-version" value="1.0.0-beta3" />
    <add key="kre-clr" value="clr" />
    <add key="kre-app-base" value="..\approot\packages\ElectricFreedom.WebUI\1.0.0\root" />
  </appSettings>
</configuration>

Затем я получаю другую ошибку:

Сообщение об ошибке 500

В нижнем колонтитуле ошибки указано, что используется Microsoft.AspNet.Loader.IIS версия "beta2"! Почему он это делает, когда проект настроен на использование «beta3»?

Я проверил project.json для своего проекта, и все зависимости указаны как версии «beta3», но публикация по-прежнему копирует множество версий «beta2» в дополнение к версиям «beta3». Например, поиск в каталоге для Microsoft.AspNet.Loader.IIS показывает два подкаталога, один для «beta2», а другой для «beta3». Если я удалю каталог «beta2», я получу совершенно другую ошибку:

Ошибка 500 после удаления каталога beta2

Как видите, эта ошибка показывает, что используется «beta3» версия Microsoft.AspNet.Loader.IIS, но теперь вместо этого жалуется на внедрение зависимостей.

Все это отлично работало в Visual Studio 2015 CTP5 с MVC 6 (бета-версия 2). Единственное, что мне нужно было сделать, это добавить ключ value к kre-app-base, так как по какой-то причине публикация не сделала этого. Сайт также отлично работает при отладке в IIS Express, и при этом я не получаю ни одной из ошибок, о которых сообщалось выше.

Существуют ли какие-либо файлы конфигурации или настройки, которые могут вызывать эти ошибки? Я упускаю что-то очевидное?

Спасибо,


person Dylan Parry    schedule 04.03.2015    source источник
comment
Я протестировал его и обнаружил, что он работает у меня в CTP6 так же, как и в CTP5. Просто убедитесь, что вы указали wwwroot в качестве корневого каталога приложения.   -  person dotnetstep    schedule 04.03.2015
comment
Он указывает на wwwroot. Он работал нормально, когда я использовал CTP5, но тот же проект больше не работает с CTP6. Я могу только предположить, что некоторые настройки изменились между версиями, и это привело к сбою моего проекта. Проблема заключается в том, чтобы найти все, что изменилось, и убедиться, что мой проект имеет новые настройки...   -  person Dylan Parry    schedule 04.03.2015


Ответы (2)


Похоже, что в процессе публикации были созданы временные файлы, которые не удалялись между версиями. Они были расположены в %temp%\AspNetPublish\[ProjectName], и удаление этой папки устранило ошибки, которые я видел, поскольку были удалены все старые файлы DLL, которые не должны были публиковаться и, должно быть, конфликтовали с новыми версиями.

person Dylan Parry    schedule 05.03.2015

Я могу воспроизвести его, открыв проект CTP5 в CTP6. Я явно вижу проблему в какой-то сборке.

Я сделал следующую вещь.

  1. В Project.json замените beta2 на beta3 в зависимостях.

  2. После того, как вы выполните шаг 1, вы получите проблему, связанную с миграцией, и причину того, что есть некоторые изменения в пространстве имен и возвращаемом типе некоторого метода в AccountController. Если вы удалите каталог миграции и AccountController после публикации, он успешно отобразит home/index.

person dotnetstep    schedule 05.03.2015
comment
Да, я выполнил эти шаги для обновления проекта, и все компилировалось нормально. Он также работал нормально через IIS Express. Проблема была в том, что когда дело дошло до публикации, в каталоге temp остались некоторые файлы из beta2, которые не удалялись при повторной публикации. Как упоминалось в моем ответе, я решил это, удалив все временные файлы. - person Dylan Parry; 05.03.2015