Blazor WebAssembly Server项目如何引用客户端索引?

Blazor WebAssembly Server项目如何引用客户端索引?,blazor,blazor-client-side,blazor-webassembly,Blazor,Blazor Client Side,Blazor Webassembly,使用模板:启用ASP.NET核心托管的Blazor WebAssembly应用程序 它创建项目: BlazorApp1.客户机 BlazorApp1.Server 我可以看到服务器有一个对客户端的项目引用,但我无法确定什么代码允许服务器显示客户端 服务器如何知道客户端索引文件位于另一个程序集中 服务器项目中托管的客户端代码是否位于同一端口上 试图弄明白这一点我有点不知所措。项目引用就在那里,以便MsBuild(VS)可以将客户端文件复制到服务器的bin目录 然后,服务器有一个特殊的中间件组件

使用模板:启用ASP.NET核心托管的Blazor WebAssembly应用程序

它创建项目:

  • BlazorApp1.客户机
  • BlazorApp1.Server
我可以看到服务器有一个对客户端的项目引用,但我无法确定什么代码允许服务器显示客户端

服务器如何知道客户端索引文件位于另一个程序集中

服务器项目中托管的客户端代码是否位于同一端口上


试图弄明白这一点我有点不知所措。

项目引用就在那里,以便MsBuild(VS)可以将客户端文件复制到服务器的bin目录

然后,服务器有一个特殊的中间件组件为客户机提供服务。以下两行都是关于服务静态文件的:

app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
服务器实际上不链接或引用客户端中的任何代码

服务器项目中托管的客户端代码是否位于同一端口上

是的,只是为了方便。您可以在其他地方托管客户端(但也可以考虑CORS设置)

我无法确定什么代码允许服务器显示客户端

这发生在UseEndPoints中的最后一行:

endpoints.MapControllers();                  // handle /api
endpoints.MapFallbackToFile("index.html");   // everything else

请注意,正因为如此,您的API永远不会返回404代码。它将返回客户端应用程序的“nothing here”页面。您将看到一个与“HTML不是JSON”相关的错误。

这是一个糟糕的例子,服务器项目引用了客户端。他们对微软感到失望,但并不感到惊讶,因为他们从来没能做好网络工作。