2

我想在现有的 ASP.NET Core 3.0 MVC 项目中设置一个控制器操作来为 Blazor 应用程序提供服务。我在过去看到过与其他 SPA 框架类似的东西,该操作的视图仅包含带有捆绑包的脚本标记,通常还有一些其他设置,例如将 SPA 构建放置在 MVC 项目的 wwwroot 上。

看看 Blazor 应用程序,它在某种程度上似乎相似,其中 index.html 文件包含 wasm 脚本。但老实说,我不确定从哪里开始设置它。有任何想法吗?

4

1 回答 1

2

似乎您正在使用 Blazor 客户端。基本上,Blazor 客户端应用程序条目是加载. 此脚本将动态下载所有静态资产(和)。请注意,如果您可以使这些资产可用,即使没有 ASP.NET Core,您也可以托管 Blazor 客户端应用程序。<script>blazor.webassembly.js*.wasm*.dlls

由于您使用 ASP.NET Core MVC 作为服务器,因此一种简单的方法是:

  1. 添加一个包引用,Microsoft.AspNetCore.Blazor.Server以便我们*.wasm *.dll只需一个代码即可提供文件。
    <PackageReference Include="Microsoft.AspNetCore.Blazor.Server" Version="3.0.0-preview9.19465.2" />
    
  2. 将项目引用添加到您的客户端项目,以便我们可以从源代码生成静态数据。假设您的客户端 Web 程序集应用程序是MyClientSideBlazorApp

    <ProjectReference Include="..\MyClientSideBlazorApp\MyClientSideBlazorApp.csproj" />
    
  3. 现在您可以在 Startup.cs 中注册一个中间件来提供静态文件:

    app.UseClientSideBlazorFiles<MyClientSideBlazorApp.Startup>();
    app.UseStaticFiles();
    
  4. 最后,在要为 blazor 提供服务的任何页面/视图中,例如Home/Privacy.cshtml视图文件,添加一个<script>以加载条目以及一个<base>元素以确保相对路径正确。

    @{
       Layout = null;
    }
    <base href="/">
    
    ... 
    
    <app>Loading...</app>
    
    <script src="/_framework/blazor.webassembly.js"></script>
    

它现在应该可以正常工作了。

于 2019-10-21T07:10:25.330 回答