Ошибка ASP.NET Core 6: InvalidOperationException: дескриптор для '/Pages/Error.cshtml' не найден
Я новичок в веб-приложениях ASP.NET Core 6. У меня возникла проблема при первом запуске веб-приложения.
Я получаю такую ошибку:
InvalidOperationException: дескриптор для «/Pages/Error.cshtml» не найден.
Мне нужна помощь в решении этой проблемы.
4 ответа
Существует проблема GitHub, связанная с этим сообщением об ошибке , хотя особенности этого конкретного случая будут другими. В нем участник @pranavkm предлагает следующее руководство :
Приложение ссылается на среду выполнения 6.0 и версию 3.1 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation (переходно через https://www.nuget.org/packages/Volo.Abp.AspNetCore.Mvc/1.1.2). Недавно мы внесли изменение в поведение Mvc, которое требует совместимой (версия 6.0) компиляции среды выполнения при использовании этой функции. Добавление ссылки на пакет в версию 6.0 избавит вас от этой проблемы.
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.0-preview.2.21101.10" />
Смешивание версий пакета (с использованием пакета версии 3.x или 5.x со средой выполнения 6.0) не всегда будет работать. Мы ожидаем, что пользователи обновят свои пакеты в рамках миграции. Я могу запустить это с помощью большего количества людей в команде разработчиков, но маловероятно, что мы будем выполнять здесь какую-либо дополнительную работу.
Теперь, очевидно, вы, вероятно, не используете
Volo.Abp
— и, соответственно, может не использовать Razor Runtime Compilation. В результате источник вашей конкретной ошибки, вероятно, отличается. Но причина вашей ошибки должна быть той же: одна из ваших зависимостей поддерживает ссылку на устаревший пакет 3.x или 5.x с несовместимым кодом.
Оценив трассировку стека, вы сможете определить конкретного виновника, и, надеюсь, разработчик уже включил обновленную версию своего пакета.
Если это связано с нижестоящей зависимостью, как в приведенном выше примере, вам потребуется развернуть граф зависимостей в NuGet, чтобы найти вызывающий нарушение пакет, который зависит от среды выполнения 3.x или 5.x. Если это так, надеюсь, есть более новая совместимая версия, и тогда вы можете установить явную зависимость от обновленной версии через NuGet.
Если нет более новой совместимой версии вызывающего ошибку пакета, вам необходимо связаться с поставщиком и/или подождать, пока он выпустит обновление для .NET 6.
Мое решение состояло в том, чтобы изменить целевую структуру с net6 на net5, потому что, похоже, VS2019, вероятно, не может запустить приложение net6.0.
Поделитесь своим файлом program.cs и, если вы используете предварительную версию 7 asp.net core 6, поделитесь своими startup.cs и program.cs. Но, пожалуйста, проверьте, установлена ли у вас последняя версия sdk предварительного просмотра asp.net core 6. [1]: https://dotnet.microsoft.com/download/dotnet/6.0 . Я жду ваших отзывов.
У меня была та же ошибка, и после погони за дикими гусями версии пакета я понял, что рассматриваемая страница была исключена из моего проекта:
Это было нормально, пока я не перешел на VS 2022 для обновления .net 6, и когда я удалил исключенные файлы, все заработало нормально.
Поэтому я предполагаю, что это была проблема с VS 2022 - если кто-то не может объяснить мне, почему VS2022 имеет право пытаться обслуживать страницу, исключенную из проекта (когда VS 2019 этого не делал).