que pages netcore net español asp asp.net-core asp-net-core-spa-services

pages - Cómo configurar el enrutamiento del servidor ASP.net Core para múltiples SPA alojados con SpaServices



razor pages español (1)

Gracias a SteveSandersonMS y chris5287 por Github por indicarme la solución a esto.

IApplicationBuilder.Map puede segregar rutas en diferentes áreas de interés. Si app.UseSpa una llamada a app.UseSpa en una llamada a app.Map , el SPA se manejará solo para la ruta especificada por la llamada del Map . La llamada app.UseSpa termina pareciéndose a:

app.Map("/app1", app1 => { app1.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 --app=app1 --base-href=/app1/ --serve-path=/"); } }); });

Puede hacer tantas llamadas a app.Map como sea necesario para configurar sus SPA. También tenga en cuenta la modificación del spa.UseAngularCliServer call al final: deberá configurar --base-href y --serve-path para que coincida con su configuración particular.

Tengo una aplicación Angular 5 que quiero alojar con Angular Universal en ASP.net Core utilizando la última plantilla de Angular RC . He seguido los documentos y tengo la aplicación en funcionamiento. El problema es que también estoy usando las herramientas i18n de Angular, que producen múltiples aplicaciones compiladas, 1 por localidad. Necesito poder alojar cada uno desde https://myhost.com/{locale}/ .

Sé que puedo activar una instancia de la aplicación Core de ASP.net para cada configuración regional y configurar el alojamiento en el servidor web para que tenga las rutas de acceso adecuadas a la aplicación asociada, pero esto me parece excesivo.

Las rutas se configuran con:

// app is an instance of Microsoft.AspNetCore.Builder.IApplicationBuilder app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller}/{action=Index}/{id?}"); });

Los servicios de spa están configurados con:

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"); } });

He revisado la documentación y la fuente en Github, y no encuentro cómo configurar ASP.net Core para asociar una ruta específica con un SPA determinado. ¿Alguien tiene alguna idea?