哪些角度版本与 AspNetCore SpaServices 兼容?

Posted

技术标签:

【中文标题】哪些角度版本与 AspNetCore SpaServices 兼容?【英文标题】:What angular versions are compatible with AspNetCore SpaServices? 【发布时间】:2021-10-25 10:28:59 【问题描述】:

我们正在将使用 .net 框架和 angular 1.7 的旧应用程序转换为 .net core 2.1。我的第一步是转换为 .net 核心并用它启动旧的 Angular 代码。

我在 .net core 中找到了一个使用 services.AddSpaStaticFiles、app.UseSpaStaticFiles、spa.UseAngularCliServer 的示例。

我已经运行了示例,但是我现在如何将启动链接到旧应用程序,这甚至可能吗? Microsoft.AspNetCore.SpaServices 中的这些扩展是否与这个非常旧的 Angular 版本兼容?

【问题讨论】:

【参考方案1】:

在阅读文档和示例时,您必须区分 Angular 和 AngularJS。旧版本 (1.X) 通常被称为 AngularJS,而新版本 (2.X) 被称为 Angular。

可以使用任何版本的 .NET Core 运行任何前端,但默认扩展方法可能不适合处理每种情况,因此您可能必须编写自定义中间件来为您处理不同的内容。遗憾的是,我没有使用 AngularJS 的经验,所以我不知道默认管道是否可以正常工作或需要进行哪些调整。我会假设 AngularJS 不使用 Angular CLI(但请仔细检查)所以 UseAngularCliServer 不在等式中。

您可以参考this Stack Overflow 的关于扩展方法工作原理的基础知识。

您需要做的很大程度上取决于您的 SPA 应用程序,但基本情况如下:

让应用程序知道它应该将某些文件作为“默认值”(例如 index.html) 让应用程序知道您的 SPA 将使用一些应该提供的资源(例如脚本、图像、js 文件等) 让应用程序知道 SPA 中存在“内部”路由,并且在请求这些路由时不应尝试加载不同的资源(例如,不要在子路由上返回 404)。

我找到的一个示例指南(使用 .NET Core 2.0,但您应该能够适应 2.1)是 here。

【讨论】:

【参考方案2】:

自 ASP.NET Core 2.1 以来,以下 NuGet 包的内容都不再需要,因此现在被标记为过时:

Microsoft.AspNetCore.SpaServices
Microsoft.AspNetCore.NodeServices

[Announcement] Obsoleting Microsoft.AspNetCore.SpaServices and Microsoft.AspNetCore.NodeServices

【讨论】:

以上是关于哪些角度版本与 AspNetCore SpaServices 兼容?的主要内容,如果未能解决你的问题,请参考以下文章

Swashbuckle.AspNetCore.SwaggerGen 版本 5.6.X 没有 IDataContractResolver

AspNetCore.Mvc.Core 版本不匹配

跟我一起 掌握AspNetCore底层技术和构建原理

microsoft.aspnetcore.http 在哪个dll中

此版本的 Microsoft.AspNetCore.All 只兼容 netcoreapp2.1 目标框架

未找到 Microsoft.NetCore.App 或 Microsoft.AspNetCore.App 的指定版本