Тип или имя пространства имен 'Mvc' не существует в пространстве имен 'System.Web'. NET MVC 5 to. NET Core 3.1 MVC Миграция - PullRequest
0 голосов
/ 17 января 2020

Я почти завершил миграцию с ASP. NET MVC 5 на. NET Core 3.1, и я получаю эту ошибку,

"Имя типа или пространства имен" Mvc 'не существует в пространстве имен' System.Web '(вам не хватает ссылки на сборку?).

Ошибка возникает в моих представлениях "Views -> Shared -> Error.cs html" где я устанавливаю модель.

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error"
}

<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>

Я удалил все пакеты AspNetCore и заново добавил их, и я попытался перезапустить Visual Studio (VS19) все безрезультатно.

Возможно, обработка ошибок перенесена из пакета Mvc в. NET Ядро, это мое лучшее предположение.

1 Ответ

1 голос
/ 17 января 2020

In ASP. NET Core 3.1 , основное пространство имен для MVC приложения равно Microsoft.AspNetCore.Mvc. Попробуйте использовать это вместо System.Web.Mvc.

Тем не менее, что касается обработки ошибок, в частности, подход немного изменился с ASP. NET Framework и класс HandleErrorInfo больше не существует. Для получения дополнительной информации о новом подходе см. Обработка ошибок в ASP. NET Core . Например, вместо использования класса HandleErrorInfo для извлечения информации об исключении вы теперь используете реализацию IExceptionHandlerPathFeature - хотя это и немного больше, чем это, как описано в документации.

В конечном счете, это только первое из многих отличий, с которыми вы можете столкнуться при переходе на ASP. NET Core . Учитывая это, я бы порекомендовал прочитать руководство Microsoft Migrate с ASP. NET до ASP. NET Core , в котором содержится полезная сводка того, что изменилось и как к нему обратиться. миграция.

Кроме того, если вы используете Visual Studio , я бы рекомендовал создать новый ASP. NET Базовое веб-приложение проект , который создаст базовое c ASP. NET Core 3.1 MVC приложение. Это может быть действительно полезным для ссылки при выполнении миграции, так как оно определяет, как должна выглядеть реализация "учебника", и дает вам представление о том, что изменилось и как к нему подходить. аналогичные проблемы в новом фреймворке.

В конечном счете, многие изменения в ASP. NET Core просто связаны с добавлением ссылок на правильный NuGet * Пакеты 1039 *, обновление пространств имен и, в некоторых случаях, обновление кода для соответствия изменениям в сигнатурах классов. Тем не менее, остается ряд областей, в которых старые подходы (и классы, которые их поддерживали) больше не существуют - как в данном случае - и, следовательно, требуют дополнительной мысли и заботы.

Положительно, это много проще с . NET Core 3.x , чем это было с предыдущими версиями, так как Microsoft сделала тонну , чтобы сократить разрыв четности между . NET Framework и . NET Core за последние четыре года. И, как только вы закончите миграцию, я думаю, что ваш новый сайт станет намного чище и проще в обслуживании.

...