Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何为使用SpaServices托管的多个SPA配置ASP.net核心服务器路由_Asp.net Core_Asp Net Core Spa Services - Fatal编程技术网

Asp.net core 如何为使用SpaServices托管的多个SPA配置ASP.net核心服务器路由

Asp.net core 如何为使用SpaServices托管的多个SPA配置ASP.net核心服务器路由,asp.net-core,asp-net-core-spa-services,Asp.net Core,Asp Net Core Spa Services,我有一个Angular 5应用程序,我想在ASP.net内核上使用Angular Universal托管,该应用程序使用最新版本。我已经按照文档进行了操作,并且已经启动并运行了应用程序。问题是我也在使用Angular,它生成多个已编译的应用程序,每个语言环境1个。我需要能够从https://myhost.com/{locale}/ 我知道我可以为每个区域设置一个ASP.net核心应用程序的实例,并在Web服务器中设置主机,使其具有到相关应用程序的适当路径路由,但这对我来说似乎太过分了 路由配置为

我有一个Angular 5应用程序,我想在ASP.net内核上使用Angular Universal托管,该应用程序使用最新版本。我已经按照文档进行了操作,并且已经启动并运行了应用程序。问题是我也在使用Angular,它生成多个已编译的应用程序,每个语言环境1个。我需要能够从
https://myhost.com/{locale}/

我知道我可以为每个区域设置一个ASP.net核心应用程序的实例,并在Web服务器中设置主机,使其具有到相关应用程序的适当路径路由,但这对我来说似乎太过分了

路由配置为:

//应用程序是Microsoft.AspNetCore.Builder.iaApplicationBuilder的实例
app.UseMvc(路由=>
{
routes.MapRoute(
名称:“默认”,
模板:“{controller}/{action=Index}/{id?}”);
});
SPA服务配置为:

app.UseSpa(spa=>
{
//要从ASP.NET Core了解更多有关提供角度SPA的选项,
//看https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath=“ClientApp”;
spa.UseSpaPrerendering(选项=>
{
options.BootModulePath=$“{spa.options.SourcePath}/dist server/main.bundle.js”;
options.BootModuleBuilder=env.IsDevelopment()
?新AngularCliBuilder(NPMSCcript:“构建:ssr:en”)
:null;
options.ExcludeUrls=new[]{“/sockjs节点”};
options.SupplyData=(上下文,数据)=>
{
数据[“foo”]=“bar”;
};
});
if(env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript:“启动”);
}
});
我查看了Github上的文档和源代码,但找不到如何配置ASP.net Core以将特定路由与给定SPA关联。有人有什么想法吗?

感谢Github和其他网站为我提供了解决方案

iaapplicationbuilder.Map
可以将路径分隔到不同的关注区域。如果将对
app.UseSpa
的调用包装在对
app.Map
的调用中,则SPA将仅针对
Map
调用指定的路径进行处理。
app.UseSpa
调用结果如下:

app.Map(“/app1”,app1=>
{
附录1.UseSpa(spa=>
{
//要从ASP.NET Core了解更多有关提供角度SPA的选项,
//看https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath=“ClientApp”;
spa.UseSpaPrerendering(选项=>
{
options.BootModulePath=$“{spa.options.SourcePath}/dist server/main.bundle.js”;
options.BootModuleBuilder=env.IsDevelopment()
?新AngularCliBuilder(NPMSCcript:“构建:ssr:en”)
:null;
options.ExcludeUrls=new[]{“/sockjs节点”};
options.SupplyData=(上下文,数据)=>
{
数据[“foo”]=“bar”;
};
});
if(env.IsDevelopment())
{
UseAngularCliServer(npmScript:“start--app=app1--base href=/app1/--service path=/”;
}
});
});
您可以根据需要调用
app.Map
,以配置您的SPA。还要注意最后对
spa.UseAngularCliServer
调用的修改:您需要设置
--base href
--service path
,以匹配您的特定配置。

感谢Github和Github为我提供了这方面的解决方案

iaapplicationbuilder.Map
可以将路径分隔到不同的关注区域。如果将对
app.UseSpa
的调用包装在对
app.Map
的调用中,则SPA将仅针对
Map
调用指定的路径进行处理。
app.UseSpa
调用结果如下:

app.Map(“/app1”,app1=>
{
附录1.UseSpa(spa=>
{
//要从ASP.NET Core了解更多有关提供角度SPA的选项,
//看https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath=“ClientApp”;
spa.UseSpaPrerendering(选项=>
{
options.BootModulePath=$“{spa.options.SourcePath}/dist server/main.bundle.js”;
options.BootModuleBuilder=env.IsDevelopment()
?新AngularCliBuilder(NPMSCcript:“构建:ssr:en”)
:null;
options.ExcludeUrls=new[]{“/sockjs节点”};
options.SupplyData=(上下文,数据)=>
{
数据[“foo”]=“bar”;
};
});
if(env.IsDevelopment())
{
UseAngularCliServer(npmScript:“start--app=app1--base href=/app1/--service path=/”;
}
});
});

您可以根据需要调用
app.Map
,以配置您的SPA。还请注意最后对
spa.UseAngularCliServer
调用的修改:您需要设置
--base href
--service path
,以匹配您的特定配置。

如果您使用IIS,请尝试将您的所有区域设置应用程序设置为子应用程序如果您使用IIS,请尝试将您的所有区域设置应用程序设置为子应用程序您的构建是什么:ssr:en请参阅附录1。非常感谢,如果您每种语言有不同的BootModulePath,那么还有其他事情要做。例如,Options.BootModulePath=$“{spa.Options.SourcePath}/dist server/en/main.bundle.js”;和ptions.BootModulePath=$“{spa.Options.SourcePath}/dist server/fr/main.bundle.js”;hre是我为“buildssr-i1n8-EN-browser”创建的版本:“ng build--prod--locale=EN--i18n file src/i18n/messages.EN.xlf--base href=/EN--deploy url=/EN--output path=dist/EN”,“SSR build-i1n8-EN-server”:“ng build--prod--locale=en--i18n file src/i18n/messages.en.xlf--base href=/en--deploy url=/en--output path=dist server/en--app 1--output hashing=false”,我这方面似乎什么都不管用。如果你可以共享整个启动和bui