【发布时间】:2018-06-21 08:45:46
【问题描述】:
我有一个 Angular 5 应用程序,我想使用最新的 Angular template RC 在 ASP.net Core 上使用 Angular Universal 托管它。我已经按照文档并启动并运行了应用程序。问题是我也在使用 Angular 的 i18n tools,它会生成多个编译的应用程序,每个语言环境 1 个。我需要能够从https://myhost.com/{locale}/ 主持每个人。
我知道我可以为每个语言环境启动一个 ASP.net Core 应用程序的实例,并在网络服务器中设置托管以使适当的路径路由到相关的应用程序,但这对我来说似乎太过分了。
路由配置:
// app is an instance of Microsoft.AspNetCore.Builder.IApplicationBuilder
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action=Index}/{id?}");
});
SpaServices 配置有:
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
spa.UseSpaPrerendering(options =>
{
options.BootModulePath = $"{spa.Options.SourcePath}/dist-server/main.bundle.js";
options.BootModuleBuilder = env.IsDevelopment()
? new AngularCliBuilder(npmScript: "build:ssr:en")
: null;
options.ExcludeUrls = new[] { "/sockjs-node" };
options.SupplyData = (context, data) =>
{
data["foo"] = "bar";
};
});
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
我查看了 Github 上的文档和源代码,但找不到如何配置 ASP.net Core 以将特定路由与给定 SPA 相关联。有人有什么想法吗?
【问题讨论】:
-
如果您使用 IIS,请尝试将所有区域设置应用设置为子应用
标签: asp.net-core asp-net-core-spa-services