在一个WASM托管的项目中运行两个blazor WASM应用程序



我正在使用WebAssembly(WASM(托管的Blazor应用程序的最新预览。我已经设置了一个WASM托管的应用程序,并将其配置为在客户端应用程序文件夹的wwwroot/index.html文件中使用/App1/的基本href

<base href="/App1/" />

在这一点上,我的应用程序结构是这样的:

  1. 客户端
  2. 服务器
  3. 共享

然后我将服务器应用程序文件夹中的应用程序映射到路由:

app.Map("/app1", app1 =>
{
app1.UseHttpsRedirection();
app1.UseBlazorFrameworkFiles();
app1.UseStaticFiles();
app1.UsePathBase("/app1");
app1.UseRouting();
app1.UseIdentityServer();
app1.UseAuthentication();
app1.UseAuthorization();
app1.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
});
});

运行这个程序时,只需更改几个启动设置即可映射到/app1,效果非常好。接下来,我复制了客户端应用程序,并将名称空间和csproj更改为App2

我的应用程序结构现在是:

  1. App1(客户端应用程序(
  2. App2(客户端应用程序(
  3. 服务器
  4. 共享

我将基本href设置为/App2/,并为服务器启动添加了第二个映射:

app.Map("/app1", app1 =>
{
app1.UseHttpsRedirection();
app1.UseBlazorFrameworkFiles();
app1.UseStaticFiles();
app1.UsePathBase("/app1");
app1.UseRouting();
app1.UseIdentityServer();
app1.UseAuthentication();
app1.UseAuthorization();
app1.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
});
});
app.Map("/app2", app2 =>
{
app2.UseHttpsRedirection();
app2.UseBlazorFrameworkFiles();
app2.UseStaticFiles();
app2.UsePathBase("/app2");
app2.UseRouting();
app2.UseIdentityServer();
app2.UseAuthentication();
app2.UseAuthorization();
app2.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
});
});

但是,该项目没有运行。它抱怨静态文件仍然合并在一起。我在尝试使用dotnet run:运行服务器项目时遇到了这个编译错误

/usr/local/share/dotnet/sdk/3.1.201/Sdks/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Microsoft.NET.Sdk.Razor.StaticWebAssets.targets(191,5): error : Conflicting assets with the same path '/appsettings.Development.json' for content root paths '/Users/user/Developer/WasmHosted/App1/wwwroot/appsettings.Development.json' and '/Users/user/Developer/WasmHosted/App2/wwwroot/appsettings.Development.json'. 

我还尝试添加一个commandLineArgs来更改客户端应用程序launchsettings中的内容根位置,但没有效果:

"commandLineArgs": "--contentroot=/app1",

任何建议都将不胜感激,因为我不知道还能尝试什么。

这是我用来创建项目的dotnet new命令

dotnet new blazorwasm -au Individual -ho -n WasmHosted
Blazor项目的团队成员Javier在这里开发了一个示例项目:https://github.com/javiercn/BlazorMultipleApps/blob/master/BlazorMultipleApps

您可以参考应用程序。UseMulitSpa,我已经创建了一个新的库WasmService来处理此

使用步骤:步骤1:在wwwroot下设置blazor-wasm应用程序根位置文件夹步骤2:使用应用程序。使用MulitSpa添加blazor wasm应用程序,您需要定义一个公共路径,

在运行过程中,主主机应用程序将为每个blazor wasm应用程序使用独立端口,并且WasmService有一个内部代理用于主主机应用调用。

相关内容

  • 没有找到相关文章

最新更新