У меня возникают проблемы с развертыванием приложений .NET Core в IIS на компьютере с Windows 10.
Когда я развертываю IIS и перехожу на сайт, я получаю сообщение:
"HTTP Error 500.31 - Failed to load ASP.NET Core runtime
Common solutions to this issue:
The specified version of Microsoft.NetCore.App or Microsoft.AspNetCore.App was not found.
Troubleshooting steps:
Check the system event log for error messages
Enable logging the application process' stdout messages
Attach a debugger to the application process and inspect
For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028526
В моем средстве просмотра событий каждый вызов страницы генерирует 3 сообщения об ошибках.
Не удалось найти зависимости приложения. Убедитесь, что установлены версии Microsoft.NetCore.App и Microsoft.AspNetCore.App, на которые нацелено приложение.
Не удалось найти «aspnetcorev2_inprocess.dll». Сообщение об исключении:
Не удалось запустить приложение «/LM/W3SVC/4/ROOT», код ошибки «0x8000ffff».
Только на этом я бы пошел в кроличью нору, думая, что есть какая-то проблема в сборке проекта или, возможно, в моей установке какого-то пакета .NET Core, за исключением:
Я думаю, что должна быть какая-то проблема с тем, как я настроил IIS, сайты или пулы приложений, но, насколько я могу судить, нет никакой разницы. Если кто-то сталкивался с этим, жду предложений.
🤔 А знаете ли вы, что...
C# также используется для разработки игр с помощью Unity3D, популярного игрового движка.
Используя инструмент, предложенный (и созданный) @LexLi, я смог определить, что проблема была вызвана тем, что пул приложений не имеет разрешений на папку сайта. Предоставление ему разрешений решило проблему. Это не было ясно из сообщений об ошибках. Ответил здесь на случай, если кто-то еще столкнется с таким же сообщением об ошибке.
В моем случае на целевой машине отсутствовала сама среда выполнения ASP.NET Core.
Проблема решена после установки Hosting Bundle из .Net Core 3.1
Я получал те же сообщения об ошибках для нового веб-приложения, зависящего от платформы .NET Core 3.1, на сервере IIS, на котором уже без проблем размещались другие зависящие от платформы веб-приложения .NET Core 3.1. Сообщения в средстве просмотра событий немного отличались; но также очень трудно найти - иногда я не мог видеть какие-либо события, которые, казалось бы, связаны.
Если бы я преобразовал сайт в автономный "win-x86", это сработало; но автономный "win-x64" не работал.
После дней...
dotnet --info
на сервере IIS,dotnet --info
на сервере сборки,... это оказалось настройкой AppPool.
В дополнительных настройках AppPool есть параметр «Включить 32-разрядные приложения», который IIS считает значением по умолчанию False; но на моем было True. Переключение этого параметра приводило к тому, что сайт работал и не работал, когда False и True соответственно.
На моем сайте для него было установлено значение True, потому что мы используем octopusdeploy для развертывания нашего сайта, а шаг «IIS AppPool — Create» имеет параметр, относящийся к этому параметру; но в Octopus значение по умолчанию — True, поэтому его необходимо отключить.
Я устранил эту ошибку, изменив режим развертывания с «Зависимый от платформы» на «Автономный» в процессе публикации. Не уверен, как это изменение исправило это, но у меня это работает. Я использую .NET 5.
У меня такая же проблема...
мое решение довольно простое и в то же время смущающее :) Я думал, что пакеты основных хостов asp.net совместимы с предыдущими версиями.
Решение: мое приложение было настроено на 3.1. в качестве целевой платформы, но я установил пакет хостинга 5.0.9 на iis.
После того, как я установил правильную версию пакета хостинга, версия 3.1. версия, заработало!
Мне пришлось установить и .NET 5, и .NET Core 3.1. Некоторые люди здесь предлагали загрузить 3.1 (мое приложение нацелено на 3.1), но когда я захожу на сайт Microsoft, он «рекомендует» последнюю версию, которая на момент написания этого поста — 5.0 (https://dotnet.microsoft.com). /download/dotnet/5.0).
Что ж, только версия 5.0 вызывает проблему (ошибка HTTP 500.31 — не удалось загрузить среду выполнения ASP.NET Core).
Наконец-то я смог исправить это ПОСЛЕ того, как установил 3.1 https://dotnet.microsoft.com/download/dotnet-core/3.1.
У меня была эта проблема на производстве после нескольких дней развертывания. Внезапно перестал работать с ошибкой (HTTP Error 500.31 - Failed to load runtime ASP.NET Core). В моем случае я просто восстановил установленную версию, и она заработала.
У меня была такая же проблема на производстве после развертывания. Пожалуйста, убедитесь, что все dll развернуты на рабочем сервере. В моем случае одна из dll отсутствовала. Я просто загружаю эту dll, и она работает.
Как и в ответе Alex Monkey, мне не хватало пакета хостинга.
Чтобы быть более конкретным, моя проблема заключалась в том, что я случайно установил только среду выполнения вместо пакета хостинга. Я предполагал, что ссылка «x64» на картинке ниже будет загружать 64-разрядную версию пакета, но это не так.
Вам нужно нажать на слова «Hosting Bundle», чтобы получить правильный установщик:
Получите пакет хостинга для любой версии .NET здесь.