Учитывая раствор, содержащий два сайта:.NET Core RC2 applicationhost.config несовместим с ASP.NET .NET 4.6?
1) ASP.NET на основе .NET 4,61
2) .NET Core, RC2
После запуска iisexpress для (2), МСВС обновляет applicationhost. config, чтобы содержать несколько дополнительных строк, которые кажутся несовместимыми с (1). Это не замечается до тех пор, пока iisexpress не отключится, а затем попытается запустить (1).
Несовместимые линии:
<section name="aspNetCore" overrideModeDefault="Allow" />
<add name="AspNetCoreModule" image="C:\Program Files (x86)\Microsoft Web Tools\AspNetCoreModule\aspnetcore.dll" />
<add name="AspNetCoreModule" />
При запуске (1), появится диалоговое окно с указанием "IISExpress не удалось запустить" и событие написано:
В Модуль DLL «C: \ Program Files (x86) \ Microsoft Web Tools \ AspNetCoreModule \ aspnetcore.dll не удалось загрузить из-за проблемы с конфигурацией. Текущая конфигурация поддерживает загрузку изображений, созданных для архитектуры процессора AMD64. Поле данных содержит номер ошибки. Чтобы узнать больше об этой проблеме, в том числе о том, как устранить эту ошибку несоответствия архитектуры процессора, см. http://go.microsoft.com/fwlink/?LinkId=29349.
Возможные решения?
A) Удалены лишние строки перед запуском (1), как добиться этого автоматически?
B) Используйте другой applicationhost.config для каждого веб-сайта, есть ли переменная окружения, чтобы установить это?
C) Непосредственно устраните проблему, указанную в журнале событий. Как-то это работает при запуске сайта .NET Core RC2, так что это странно.
D) Используйте отдельные файлы решений, которые находятся в разных каталогах. Это нежелательно, так как это довольно сложное решение.
Возможное решение - вручную отредактировать applicationHost.config вручную, чтобы два веб-приложения выполнялись в разных пулах приложений (приложение .NET 4.6.1 в пуле с CLR 4 и ядром ASP.NET Core в пуле без CLR) и с отдельной конфигурацией модуля для загрузки этого модуля ASP.NET Core только в приложении ASP.NET Core. –
@LexLi, я попробовал что-то похожее на ваш совет, переместив третий из раздела по умолчанию Location = "" в конкретное местоположение основной сети и смог запустить оба сайта. Но если я перестрою и запустил основной сайт, MSVS снова добавит строку в область Location = "". Я предполагаю, что если переписывание MSVS произойдет, если я выйду в отдельные пулы приложений, исправьте? Поскольку MSVS записывает раздел глобальных модулей. – crokusek
Есть также эти «preConditions» в некоторых линиях dll. Я попробовал добавить bitness64 к тому, на что он жаловался, но он сделал ошибку. – crokusek