使用 app.useSpa() 并处理 404 的 Asp.Net Core

Posted

技术标签:

【中文标题】使用 app.useSpa() 并处理 404 的 Asp.Net Core【英文标题】:Asp.Net Core which uses app.useSpa() and handles 404s 【发布时间】:2021-11-28 02:12:20 【问题描述】:

我们有一个 Asp.Net Core 应用程序,它使用以下方法包装 Spa (Angular):

app.useSpa()

中间件。效果很好。

当一个不存在的 url 页面请求进入时(通常是从以前的技术堆栈 .aspx 请求页面),我们在 Angular 的路由器中处理它。

但是 app.useSpa() 中间件在 .net 中引发了一个错误,该错误被捕获并发布。

当请求 404 '.aspx' 页面时,我们如何让 asp.useSpa() 不抛出错误(如下)?

例外是:

System.InvalidOperationException:SPA 默认页面中间件无法返回默认页面“/index.html”,因为未找到,并且没有其他中间件处理该请求。

【问题讨论】:

有没有你学过的教程可以在这里分享一下?这可能有助于我们重现您的问题,我无法很好地了解您的情况。 【参考方案1】:

从微软文档中,他们说:

通过返回单页应用程序 (SPA) 的默认页面来处理中间件链中的所有请求。

这意味着对尚未找到控制器的路由的任何请求将始终返回默认的 SPA 页面,而不是抛出 404。您所拥有的异常是其他内容,与引发的问题无关关于“useSpa()”。这是配置问题或其他问题...一个常见问题是 Angular 应用程序的 API Url 中的斜杠。

【讨论】:

以上是关于使用 app.useSpa() 并处理 404 的 Asp.Net Core的主要内容,如果未能解决你的问题,请参考以下文章

WebFlux 功能:如何检测空 Flux 并返回 404?

404错误处理:重定向还是直接404?(摘录)

AngularJS 和处理 404 错误

解析 404 url​​ 并使用 nginx 重定向

Scrapy 404错误:未处理或不允许HTTP状态代码

在烧瓶404上添加自定义处理程序,500页