我遇到的问题是在我的 Blazor WASM 应用程序中,在开发(dotnet watch)时,如果应用程序内的链接或手动输入 URL(例如:http://localhost:5267/Contact)它会导航到没有问题的所需页面。
但是,当我在 Azure 上部署时,我可以导航到应用程序 (www.mywebsite.com) 并使用导航栏中的链接在应用程序内导航到应用程序的其他部分,但如果我手动输入 URL像上面一样(示例:www.mywebsite.com/Contact),我收到来自 azure 的 404 错误,控制台中仅显示 :
Failed to load resource: the server responded with a status of 404 () Contact:1
我尝试了网上找到的几种解决方案,包括在项目的根目录中添加 web.config 文件,但都无济于事。
如有任何帮助,我们将不胜感激!
这也是我的第一个问题,如果有更多信息我可以分享,请告诉我!
如果您将 Blazor wasm 应用程序托管为 Azure 静态 Web 应用程序,则还需要 staticwebapp.config.json 来为您执行初始路由。在本地,这可以通过使用 Kestrel 来实现,但在 Azure 静态 Web 应用程序上,没有运行的服务器进程来执行初始路由。
另请参阅文档 https://learn.microsoft.com/en-us/azure/static-web-apps/configuration#file-location
对于我的情况,用以下内容填充 staticwebapp.config.json 文件就足够了:
{
"navigationFallback": {
"rewrite": "/index.html"
}
}