【发布时间】:2021-05-17 20:37:47
【问题描述】:
“标准”Blazor WASM 应用程序托管在静态 HTML 页面中;例如,index.html。由于某些要求,我想在 Razor 页面应用程序中托管 Blazor。
我所做的是从“标准”Blazor WASM 应用程序开始,删除静态文件,因为我不需要它们,将 index.html 的内容移动到 Wasm.cshtml,并将 endpoints.MapFallbackToFile("index.html"); 更改为 @987654325 @。
一切似乎都按预期进行;我可以运行应用程序并导航到 Blazor 中的不同页面。
但是,当我尝试使用其 URL 访问页面时,事情就崩溃了;例如,http://mysite/counter,其中/counter 是 Blazor 中的一个页面,我收到以下错误:
An unhandled exception occurred while processing the request.
AmbiguousMatchException: The request matched multiple endpoints. Matches:
/Wasm
/Wasm
谁能帮我找出我做错了什么?
附注:
- 我在这里查看了一些答案,但我发现的只是人们在谈论 Blazor Server。
- 我正在使用 .NET 3.1 和 Blazor 3.2。
- 我想使用我的 Razor Pages 应用程序来托管/服务 Blazor WASM,而不是将它们混合在一个项目中。它们仍然是 2 个不同的项目。
- 我完全知道 Blazor WASM 和 Razor Pages 是不相关的技术。我不是想整合它们。我只是想从动态页面服务器 Blazor WASM 文件。如果它让您更好地思考我想要实现的目标,请将 Razor Pages 视为任何服务器端技术; PHP、Node 或其他任何东西,然后将其应用于我要解决的路由问题。
【问题讨论】:
-
这将如何运作?哪个平台(Razor Pages 或 Blazor)可以处理路由?
-
这不是
endpoints.MapFallbackToPage("/index")应该处理的吗?来自文档:[it] 旨在处理请求的 URL 路径不包含文件名且没有其他端点匹配的情况。这便于将动态内容请求路由到 SPA 框架,同时还允许对不存在文件的请求导致 HTTP 404。 -
如果这是这里发生的唯一事情,我可以理解这一点。但即使我更改 Blazor
Index.razor页面的路由,我也会遇到同样的错误。无论如何,看起来我在这里遗漏了一些东西,这就是我要问的。 -
目前还不清楚您在这里要完成什么; Razor 和 Blazor 不是竞争框架,它们是相同技术的不同实现。为什么要将一个动态框架放在第二个动态框架中?
-
简而言之,我有一个现有的 Razor Pages 应用程序,我想将 Blazor 添加到它,因为我想在类似 SPA 的页面中实现它们的某些要求。如果他们不竞争,让他们住在一起有什么问题?我可以在 Razor Pages 应用程序中托管 JavaScript 框架,不是吗? Razor 将处理路由,当它到达 Blazor 页面时,Blazor 将从那里获取它,因为没有任何页面会到达服务器以在路由中发生冲突。我的问题是替换
index.html。
标签: asp.net-core blazor razor-pages blazor-webassembly