关于您问题的这部分:
然而,还有第三个选项:
dotnet blazorwasm --hosted
(或dotnet blazor --hosted
)
这与在创建应用程序时 Visual Studio 中的复选框相同:
![IMG1](https://i.imgur.com/t7v2X6F.png)
文档说:
您可以选择通过选中 ASP.NET Core 托管复选框来配置应用程序以使用 ASP.NET Core 后端
但没有解释它意味着什么...
简短版
'托管'是用于希望站点的后端和使用该后端的 Blazor 客户端都在同一个网站上托管的情况。
详细版
我同意,文档对所有这些并不是非常清楚,但解释实际上比它看起来要简单:
Blazor 应用程序必须在某处“托管”
首先要记住的是,Blazor WebAssembly 'app' 不是一个独立的网站,它是嵌入在网站中的应用程序。在许多情况下,它将像网站一样运行,因为它将用作单页应用程序,但这绝不是必需的。
基本上,Blazor WebAssembly 应用程序是通过编译/发布 Blazor 项目创建的一系列文件和 JavaScript 文件。
然后需要将这些文件放在某个网站上,并且您网站中的 div 标签名称与为您的站点生成的 Blazor JS 文件的组合处理将您的应用文件连接到浏览器的 WebAssembly 部分,以便然后在页面上呈现。
关键在于托管您的 Blazor 应用程序的网站不必是 ASP.NET Core 网站。它可以是任何站点,纯 HTML、Drupal 或其他任何站点,只需在正确处理 WebAssembly 和 JavaScript 的浏览器上显示即可。
但是,如果您还在 ASP.NET Core 中编写站点的后端,则可以重用该站点
因此,您的 Blazor 项目不必托管在一个由 ASP.NET Core 编写的网站中,但它确实必须在某个地方进行托管(以便用户可以看到它)。
如果您同时编写站点的后端,例如如果您正在编写 API 或 SignalR hub 以从 Blazor 客户端发送和接收数据,并且如果您正在 ASP.NET Core 中编写该后端,则可以重用同一站点来托管您的 Blazor 客户端。
这种情况下需要使用“托管”选项。
如果您使用上面截图中的模板创建项目,并勾选“托管”选项,您会发现创建的[YourProjectName].Server项目是启动项目,但运行该项目时显示的index.html页面来自[YourProjectName].Client项目。
这种方法意味着您的服务器上只有一个站点(这可能是好事或坏事),并且也意味着您不会遇到任何
CORS问题。
但您实际上不必拥有ASP.NET Core站点。
如果您的Blazor站点是独立站点,不从任何服务器读写数据,或者仅与第三方API或运行在旧.NET Framework上的现有Web API通信,则根本不需要ASP.NET Core站点。
在那种情况下,您不使用“托管”选项。
相反,您可以简单地发布Blazor项目,然后获取发布文件夹中的文件,并将它们托管在任何站点中。