ASP.NET Core多角度应用程序

3ax*_*xap 8 asp.net-core angular-cli angular

我有一个ASP.NET Core 2.1,我需要为多个Angular应用程序设置工作区,并具有以下路由:

http://someurl.com/main - >第一个应用程序
http://someurl.com/admin - >第二个应用程序

我使用angular-cli.json以下设置:

"apps": [
{
  "root": "src",
  "outDir": "dist",
  "assets": [
    "assets"
  ],
  "index": "index.html",
  "main": "main.ts",
  "polyfills": "polyfills.ts",
  "test": "test.ts",
  "tsconfig": "tsconfig.app.json",
  "testTsconfig": "tsconfig.spec.json",
  "prefix": "app",
  "styles": [
    "styles.css",
    "../node_modules/bootstrap/dist/css/bootstrap.min.css"
  ],
  "scripts": [],
  "environmentSource": "environments/environment.ts",
  "environments": {
    "dev": "environments/environment.ts",
    "prod": "environments/environment.prod.ts"
  }
},
{
  "root": "src2",
  "outDir": "dist2",
  "assets": [
    "assets"
  ],
  "index": "index.html",
  "main": "main.ts",
  "polyfills": "polyfills.ts",
  "test": "test.ts",
  "tsconfig": "tsconfig.app.json",
  "testTsconfig": "tsconfig.spec.json",
  "prefix": "app",
  "styles": [
    "styles.css",
    "../node_modules/bootstrap/dist/css/bootstrap.min.css"
  ],
  "scripts": [],
  "environmentSource": "environments/environment.ts",
  "environments": {
    "dev": "environments/environment.ts",
    "prod": "environments/environment.prod.ts"
  }
}
Run Code Online (Sandbox Code Playgroud)

]

我一直在尝试设置映射,Startup.cs如下所示:

app.Map("/main", l => 
        {
            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";

                if (env.IsDevelopment())
                {
                    spa.UseAngularCliServer(npmScript: "start");
                }
            });
        });

        app.Map("/admin", l =>
        {
            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}/dist2/main.bundle.js";
                    options.BootModuleBuilder = env.IsDevelopment()
                        ? new AngularCliBuilder(npmScript: "build2")
                        : null;
                });

                if (env.IsDevelopment())
                {
                    spa.UseAngularCliServer(npmScript: "start2");
                }
            });
        });
Run Code Online (Sandbox Code Playgroud)

使用以下脚本project.json:

"scripts": {
"ng": "ng",
"start": "ng serve --extract-css --base-href=/main/ --serve-path=/main/",
"start2": "ng serve --app=1 --extract-css --base-href=/admin/ --serve-path=/admin/ ",
"build": "ng build --extract-css",
"build2": "ng build --app=1 --extract-css"
Run Code Online (Sandbox Code Playgroud)

}

当我启动解决方案主应用程序工作很好,但当我尝试去管理员我失败了错误:

错误:无法匹配任何路由.网址段:'admin'错误:无法匹配任何路由.

请告诉我错过了什么,做错了我的目标感谢您的任何建议!

sve*_*.to 5

您正在app未映射的路径上注册单页应用程序 (SPA) :

app.Map("/admin", l =>
{
    app.UseSpa(spa =>
Run Code Online (Sandbox Code Playgroud)

更改appl以解决问题:

app.Map("/admin", l =>
{
    l.UseSpa(spa =>
Run Code Online (Sandbox Code Playgroud)