我想将我的asp.net(UI ASPX页面WebForms)应用程序迁移到ASP.NET Core 2。通过一些搜索,我发现.net core不支持aspx。如果这是真的(有人有这方面的确切文档吗?)任何人应该如何继续从纯 asp.net aspx 项目转换为 asp.net core 2.0?
我使用了便携式分析器工具,但仅提供每个 .dll 文件并获取报告会让人感到困惑,这更令人困惑。
如果可能,请提供有效的 Microsoft 文档。
这完全取决于您所说的“迁移”是什么意思。 正如您问题的评论中提到的,ASP.NET Core 不支持 Web 表单,因此没有任何方法可以自动将 Web 表单网站转换为 ASP.NET Core 网站。
也就是说,可以进行迁移。 我一直致力于为一个非常大的基于 Web 表单的网站执行此操作,我想将其转换为 ASP.NET Core。 如果您真的想踏上旅程,那么这里的一些信息可能会对您有所帮助。
ASP.NET Core 的总体架构基于 MVC,因此它比 ASP.NET Web Forms 更类似于 ASP.NET MVC。 因此,您最终将使用 MVC 模式的某种派生重写几乎所有 UI 代码。 您将使用布局而不是母版页。 您将使用标签助手而不是服务器控件。您将使用部分组件和视图组件,而不是用户控件。您将使用控制器和视图模型,而不是后台代码。 等等
值得注意的是,仍然有一个http上下文对象、请求对象和响应对象,它们与Web表单中的类似对象非常相似。 这有助于转换。
为了使转换过程更容易,您可以构建一个针对完整框架的 ASP.NET Core Web 应用程序。 这意味着您将可以访问完整框架中除 System.Web 命名空间中的任何内容之外的大多数内容。 以完整框架为目标确实意味着您的新网站将仅在 Windows 上运行。 但如果你能接受这一点(至少现在),它会让你的转换过程变得更容易。
如果在您的旧网站中,您将一堆功能分解到类库中,那将使您的生活更轻松。 您应该能够将这些类库原封不动地转移到新网站,并从 ASP.NET Core 网站引用它们,并且只要它们不引用 System.Web,它们很可能会正常工作。 任何引用 System.Web 的代码都需要进行修改才能使用新的类似对象或 UI 方法。
所以最终,您可能能够轻松地引入数据模型、数据访问代码、业务对象和业务逻辑。但是您必须完全重写 UI 相关代码。 这就是我正在经历的旅程,它并不像您想象的那么困难,至少在您开始熟悉 ASP.NET Core 后不会那么困难。 去获取他们!
我发现一篇文章声称这是可能的。 如您所知,将整个项目从 WebForm 立即迁移到 .Net Core 并不容易。那么,如果我能够让我的 Web 表单页面在生产中运行,同时开始逐步转换页面,会怎样呢?我的意思是在同一个项目中结合了两种方法。
这是一个名为 DotVVM 的开源提出的想法。您拥有 ASP.Net Web 表单页面,只需通过 Nuget 安装 DotVVM。 DotVVM 支持这两种方法。 DotVVM 包含类似的控件,如 GridView、Repeater、FileUpload 等,但您需要了解 DotVVM 语法。
DotVVM 可以与其他 ASP.NET 框架(Web 表单、MVC、Razor 页面)并行运行
据称:
如果业务层分离得当,一页重写平均需要1小时左右。
几个月后(如果您的项目很大),当所有 ASPX 页面都在 DotVVM 中重写时,您将能够创建一个新的 ASP.NET Core 项目,将所有 DotVVM 页面和视图模型移入其中并将它们与 . NET 核心。 DotVVM 的语法在两个平台上都是相同的。
在这里您可以看到迁移所需的五个步骤。
这里有一个 WebForms 到 .NET 8 的开源端口: github.com/webformsforcore/WebFormsForCore。
使用此库,您可以直接在 .NET 8 中运行现有的 WebForms 项目。
这里有一个视频教程,介绍如何将示例 WebForms 站点转换为 .NET 8。
您可以转移所有的业务逻辑、模型甚至一些控制器方法(您只需将这些 ActionResult 调整为 IActionResult 即可)。如果您使用 Ninject(适用于 ASP.NET Framework IOS),则只需将它们注册到 Startup.cs 中。基本上,我想说的是,您需要在 .NET Core 下创建一个新应用程序。这将是实际项目解决方案的变化,但您的实际业务流程不会有所不同。我希望这对你有帮助。