angular - ASP.NET Web API 项目上的 Angular SPA 路由
问题描述
创建了一个 Angular SPA,上面有一些路由,例如:
/messages
/messages/:id
我可以使用ng serve
URL 访问该页面,localhost:4200/messages
并且localhost:4200/messages/:id
然后我构建了解决方案并将生成的内容复制到 ASP.NET Web API 2 项目中。在项目控制器上,我设置了默认路由("/")
以返回 SPAindex.html
文件,因此如果我运行应用程序,我将获得带有 URL 的 SPA:localhost:51384
从页面上的链接我到messages/:id页面,浏览器上显示的 URL是:
本地主机:51384/消息/:id
从 Angular 文档我知道显示的 URL 是本地的,并且没有发送到服务器。如果我尝试手动访问该 URL,则会收到错误消息:
HTTP 错误 404.0 - 未找到
这很明显,因为在 WebAPI 控制器上没有/messages/:id
.
我知道我有一个概念问题,但是有没有办法使用 WebAPI 的 URL 访问 SPA 路由?如果不是,将 SPA 集成到 .NET 项目并访问 SPA 路由的正确方法是什么?是否应该仅通过页面而不是通过 URL 访问它们?
在此先感谢,请随时发表评论或投票赞成/反对
解决方案
所以你有一个很好的心态来解决这个问题。是的,服务器正在尝试访问messages/12312
其控制器,但找不到它。
所以你有2个解决方案:
更改为不需要您修改服务器的# Angular 路由方式。为此,您可以在此处查看哈希策略的简单设置:https ://angular.io/guide/router#appendix-locationstrategy-and-browser-url-styles
此选项将需要您修改服务器设置并拦截所有路由。参考这篇文章:ASP.Net Core + Angular 2 app /home 路由
推荐阅读
- python - 格式化和捕获 sys.exc_info 错误消息
- python-3.x - 运行 preprocess.py 时出错
- python - 具有 bin 和聚合的 Pandas Groupby
- javascript - 获取令牌的请求未传递到下一个获取请求,返回 401
- java - Android Studio 不会运行我对 Selenium/Carina/Appium 的测试。单击运行按钮没有任何错误
- python-3.x - 是否可以使用自定义生成器来训练带有 keras tensorflow 2.0.0 的多输入架构?
- html-parsing - 为什么lxml在解析时会关闭这个“ol”标签?
- mysql - 如何在 SQL 中添加带有 LAG 的计算列?
- lazy-evaluation - 意外的非懒惰
- sql - * 可以用于 AWS 的 IoT 规则语法中的部分主题吗?