我想在现有的 ASP.NET Core 3.0 MVC 项目中设置一个控制器操作来为 Blazor 应用程序提供服务。我在过去看到过与其他 SPA 框架类似的东西,该操作的视图仅包含带有捆绑包的脚本标记,通常还有一些其他设置,例如将 SPA 构建放置在 MVC 项目的 wwwroot 上。
看看 Blazor 应用程序,它在某种程度上似乎相似,其中 index.html 文件包含 wasm 脚本。但老实说,我不确定从哪里开始设置它。有任何想法吗?
我想在现有的 ASP.NET Core 3.0 MVC 项目中设置一个控制器操作来为 Blazor 应用程序提供服务。我在过去看到过与其他 SPA 框架类似的东西,该操作的视图仅包含带有捆绑包的脚本标记,通常还有一些其他设置,例如将 SPA 构建放置在 MVC 项目的 wwwroot 上。
看看 Blazor 应用程序,它在某种程度上似乎相似,其中 index.html 文件包含 wasm 脚本。但老实说,我不确定从哪里开始设置它。有任何想法吗?
似乎您正在使用 Blazor 客户端。基本上,Blazor 客户端应用程序的条目是加载. 此脚本将动态下载所有静态资产(和)。请注意,如果您可以使这些资产可用,即使没有 ASP.NET Core,您也可以托管 Blazor 客户端应用程序。<script>
blazor.webassembly.js
*.wasm
*.dlls
由于您使用 ASP.NET Core MVC 作为服务器,因此一种简单的方法是:
Microsoft.AspNetCore.Blazor.Server
以便我们*.wasm
*.dll
只需一个代码即可提供文件。
<PackageReference Include="Microsoft.AspNetCore.Blazor.Server" Version="3.0.0-preview9.19465.2" />
将项目引用添加到您的客户端项目,以便我们可以从源代码生成静态数据。假设您的客户端 Web 程序集应用程序是MyClientSideBlazorApp
:
<ProjectReference Include="..\MyClientSideBlazorApp\MyClientSideBlazorApp.csproj" />
现在您可以在 Startup.cs 中注册一个中间件来提供静态文件:
app.UseClientSideBlazorFiles<MyClientSideBlazorApp.Startup>();
app.UseStaticFiles();
最后,在要为 blazor 提供服务的任何页面/视图中,例如Home/Privacy.cshtml
视图文件,添加一个<script>
以加载条目以及一个<base>
元素以确保相对路径正确。
@{
Layout = null;
}
<base href="/">
...
<app>Loading...</app>
<script src="/_framework/blazor.webassembly.js"></script>
它现在应该可以正常工作了。