使用模板:启用了ASP.NET Core托管的Blazor WebAssembly应用
它创建项目:
我可以看到服务器具有对客户端的项目引用,但是我无法确定允许服务器显示客户端的代码是什么?
服务器如何知道客户端索引文件在另一个程序集中?
客户端代码是否托管在服务器项目的同一端口上?
我有点想弄清楚这个问题。
答案 0 :(得分:2)
项目参考就在这里,以便MsBuild(VS)将客户端文件复制到bin目录。
然后,服务器具有一个特殊的中间件组件来为客户端提供服务。以下几行都是关于提供静态文件的:
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
服务器实际上并未链接或引用客户端中的任何代码。
客户端代码是否托管在服务器项目的同一端口上?
是的,只是为了方便。您可以将客户端托管在其他地方(但同时还要考虑CORS设置)。
我无法确定允许服务器显示客户端的代码是什么?
这种情况发生在UseEndPoints的最后一行:
endpoints.MapControllers(); // handle /api
endpoints.MapFallbackToFile("index.html"); // everything else