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

问题描述

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

但是,一旦部署到我的测试服务器,它就不会了。项目部署到 wwwroot 中的文件夹,因此一旦部署,站点的 URL 格式/位置是“test.com/MyApp/”(登录页面)。当它在登录后路由到另一个页面时,它应该看起来像“test.com/MyApp/mypage”。但相反,它路由到"test.com/mypage",完全删除了"MyApp/",这当然会在任何地方返回 404。

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

如果我将项目代码中的NavigateTo()方法更改为看起来像NavigateTo("MyApp/mypage"),那么它可以在服务器上运行,但这似乎不正确/不必要。我不应该根据我是否正在调试将它们设置为有条件的,对吧?

看来我的应用程序在路由期间将基本 URI 丢弃在某处,我不知道在哪里/为什么。任何人都可以阐明这一点吗?

标签: routesurihrefblazor-webassemblybase

解决方案


删除前面的斜线“/”并使用。

NavigateTo("mypage")

推荐阅读