簡體   English   中英

命名空間“System.Web”中不存在類型或命名空間名稱“Mvc”。NET MVC 5 到 .NET Core 3.1 MVC 遷移

[英]The type or namespace name 'Mvc' does not exist in the namespace 'System.Web' .NET MVC 5 to .NET Core 3.1 MVC Migration

我幾乎完成了從 ASP.NET MVC 5 到 .NET Core 3.1 的遷移,我收到了這個錯誤,

命名空間“System.Web”中不存在類型或命名空間名稱“Mvc”(您是否缺少匯編引用?)。

該錯誤發生在我正在設置模型的/Views/Shared/Error.cshtml視圖中。

@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),但均無濟於事。

也許錯誤處理已從 .NET Core 中的 MVC 包中移出? 這是我最好的猜測。

ASP.NET Core 3.1中, MVC 應用程序的主要命名空間是Microsoft.AspNetCore.Mvc 嘗試使用它而不是System.Web.Mvc

ASP.NET Core 中的錯誤處理

也就是說,特別是就錯誤處理而言,該方法與ASP.NET Framework相比發生了很大變化,並且HandleErrorInfo類不再存在。 有關新方法的詳細信息,請參閱處理 ASP.NET Core 中的錯誤 例如,您現在可以使用IExceptionHandlerPathFeature的實現,而不是使用HandleErrorInfo類來檢索有關異常的信息——盡管它還有更多內容,如文檔中所述。

遷移計划

最終,這只是您在遷移到ASP.NET Core時可能遇到的許多差異中的第一個。 鑒於此,我建議通讀 Microsoft 的從 ASP.NET 遷移到 ASP.NET Core指南,該指南提供了有關已更改內容以及如何進行遷移的有用摘要。

參考項目

此外,假設您使用的是Visual Studio ,我建議您創建一個新的ASP.NET Core Web 應用程序項目,該項目將創建一個基本的ASP.NET Core 3.1 MVC 應用程序。 這在執行遷移時非常有用,因為它確定了“教科書”實現應該是什么樣子,並讓您了解發生了什么變化以及如何在新框架中解決類似問題。

最后的想法

最終, ASP.NET Core中的許多更改只是添加對正確NuGet包的引用、更新命名空間以及在少數情況下更新代碼以匹配類簽名中的更改。 盡管如此,仍有許多領域不再存在舊方法(以及支持它們的類)——就像這里的情況——因此需要額外的思考和關注。

肯定的是,使用.NET Core 3.x比使用以前的版本要容易得多,因為微軟在過去四年中做了很多工作來縮小.NET Framework.NET Core之間的功能對等差距。 而且,一旦您完成了遷移,我想您會發現您的新站點更加干凈且易於維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM