gpt4 book ai didi

asp.net-core - Asp.net core 2.1 - 如何服务多个角度应用程序?

转载 作者:行者123 更新时间:2023-12-01 22:27:10 31 4
gpt4 key购买 nike

我正在尝试从我的 .net core 服务中提供 2 个 Angular 应用程序,如下所示:

public void ConfigureServices(IServiceCollection services)
{
...

services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "wwwroot/app";
});

services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "wwwroot/admin";
});

...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...

app.UseSpaStaticFiles(new StaticFileOptions
{
OnPrepareResponse = ctx =>
{
ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=0");
}
});

app.UseMvc();

app.Map("/app", client =>
{
client.UseSpa(spa =>
{
spa.Options.SourcePath = "wwwroot/app";
});
}).Map("/admin", admin =>
{
admin.UseSpa(spa =>
{
spa.Options.SourcePath = "wwwroot/admin";
});
});
}

在文件系统中,我只有这些应用程序的 dist 输出(因为它们是由另一个团队开发的)。所以它看起来像这样:

  • C:[我的项目路径]\wwwroot\app
  • C:[我的项目路径]\wwwroot\admin

但由于某种原因,管理应用程序可以运行,而应用程序却不能运行,而且它也不支持默认页面,因此我需要使用 /index.html 输入 URL。

关于如何解决这个问题有什么想法吗?

最佳答案

好吧,我终于解决了它,它的工作原理如下:

public void ConfigureServices(IServiceCollection services)
{
...

services.AddSpaStaticFiles();

...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...

app.UseSpaStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot"))
});

app.UseMvc();

app.Map("/app", client =>
{
client.UseSpa(spa =>
{
spa.Options.SourcePath = "wwwroot/app";
spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/app"))
};
});
}).Map("/admin", admin =>
{
admin.UseSpa(spa =>
{
spa.Options.SourcePath = "wwwroot/admin";
spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/admin"))
};
});
});
}

另外,不要忘记进入每个应用程序的 index.html 文件并相应地设置 base 标记,如下所示:

//for the client application:
<base href="/app/">

//for the admin application
<base href="/admin/">

关于asp.net-core - Asp.net core 2.1 - 如何服务多个角度应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55256426/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com