有没有办法通过 MVC 应用程序中的特定控制器操作来提供 Blazor 应用程序?

2024-03-31

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

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


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

由于您使用 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>
    

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法通过 MVC 应用程序中的特定控制器操作来提供 Blazor 应用程序? 的相关文章

随机推荐