为什么 Blazor WASM 路由部署在服务器上后不使用正确的基本 URI? (NavigationManager.NavigateTo() 方法)

Why is Blazor WASM routing not using correct base URI once deployed on a server? (NavigationManager.NavigateTo() method)

一个 Blazor WASM 项目 我正在按预期在本地主机上调试时开发路线。例如,登录后,如果成功,则调用 NavigateTo("/mypage")。这在本地按预期工作,并将我带到 "localhost:44303/mypage".

然而,一旦部署到我的测试服务器,它就没有了。该项目部署到 wwwroot 中的一个文件夹,因此部署后站点的 URL format/location 是 "test.com/MyApp/"(着陆页) .当它像登录后一样路由到另一个页面时,它应该看起来像“test.com/MyApp/mypage”。但相反,它路由到 "test.com/mypage",完全删除 "MyApp/",当然 returns 404 无处不在。

我认为这是调整 index.html 文件的 <base href=""> 值的简单修复,但这并没有改变路由。在本地调试时,我把它放在 <base href="/" /> (有效)。部署时,它是 <base href="/MyApp/" />(不起作用)。我已经对此进行了研究,但似乎没有太多人遇到过这个特定问题,或者推荐的修复方法是我已经尝试过的基本 href。

如果我将项目代码中的 NavigateTo() 方法更改为 NavigateTo("MyApp/mypage") ,然后它就可以在服务器上运行,但似乎没有 right/necessary。我不应该根据我是否正在调试将它们设置为条件,对吗?

我的应用程序似乎在路由期间将基本 URI 丢弃在某处,我无法弄清楚 where/why。任何人都可以阐明这一点吗?

去掉前面的斜线“/”,直接使用。

NavigateTo("mypage")