Asp.net core 有没有办法通过MVC应用程序中的特定控制器操作为Blazor应用程序提供服务?

Asp.net core 有没有办法通过MVC应用程序中的特定控制器操作为Blazor应用程序提供服务?,asp.net-core,.net-core,asp.net-core-mvc,blazor,blazor-client-side,Asp.net Core,.net Core,Asp.net Core Mvc,Blazor,Blazor Client Side,我想在已经存在的ASP.NET Core 3.0 MVC项目中设置一个控制器操作,为Blazor应用程序提供服务。我在过去看到过与其他SPA框架类似的东西,操作的视图只包含带有捆绑包的脚本标记,通常还有一些其他设置,比如将SPA构建放在MVC项目的wwwroot上 看看Blazor应用程序,它似乎在某种程度上类似,index.html文件包含wasm脚本。但我真的不知道从哪里开始设置。有什么想法吗?看来您正在使用Blazor客户端。基本上,Blazor客户端应用程序的条目是加载Blazor.we

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


看看Blazor应用程序,它似乎在某种程度上类似,index.html文件包含wasm脚本。但我真的不知道从哪里开始设置。有什么想法吗?

看来您正在使用Blazor客户端。基本上,Blazor客户端应用程序的条目是加载
Blazor.webassembly.js
。此脚本将动态下载所有静态资产(
*.wasm
*.dll
)。请注意,如果您可以使这些资产可用,那么即使没有ASP.NET核心,您也可以托管Blazor客户端应用程序

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

  • 添加对Microsoft.AspNetCore.Blazor.Server的包引用,这样我们只需一个代码就可以为
    *.wasm
    *.dll
    文件提供服务。
    <PackageReference Include="Microsoft.AspNetCore.Blazor.Server" Version="3.0.0-preview9.19465.2" />
    
  • 现在,您可以在Startup.cs中注册一个中间件来服务静态文件:

    app.UseClientSideBlazorFiles();
    app.UseStaticFiles();
    
  • 最后,在要为blazor提供服务的任何页面/视图中,例如,在
    Home/Privacy.cshtml
    视图文件中,添加
    以加载条目,并添加
    元素以确保相对路径正确

    @{
    布局=空;
    }
    ... 
    加载。。。
    

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

    您知道如何使用Blazor 3.2实现这一点吗?
    <ProjectReference Include="..\MyClientSideBlazorApp\MyClientSideBlazorApp.csproj" />