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