代码之家  ›  专栏  ›  技术社区  ›  synergetic

Asp。Net Core Map vs MapWhen

  •  0
  • synergetic  · 技术社区  · 7 年前

    app.Map("/ca", ca =>
    {
        ca.UseSpa(spa =>
        {
            spa.Options.SourcePath = "ClientApps/AngularApp";
            spa.UseAngularCliServer(npmScript: "start");
        });
    });
    

    我原以为下面的条件是一样的,但没用:

    app.MapWhen(ctx => ctx.Request.Path.StartsWithSegments("/ca"), ca =>
    {
        ca.UseSpa(spa =>
        {
            spa.Options.SourcePath = "ClientApps/AngularApp";
            spa.UseAngularCliServer(npmScript: "start");
        });
    });
    

    这里怎么了?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Edward    7 年前

    对于 Map MapWhen ,使用Map时,匹配的路径段将从HttpRequest中删除。路径并附加到HttpRequest。每个请求的路径库。什么时候 地图时间 是用过的,没有用过。

    对于 Spa ,它将使用 requestPathBase: context.Request.PathBase.ToString()); 检查 SpaPrerenderingExtensions .

    为了获得相同的结果,您可以尝试自己删除并附加路径。

                app.MapWhen(ctx => {
                if (ctx.Request.Path.StartsWithSegments("/ca"))
                {
                    ctx.Request.Path = ctx.Request.Path.Value.Replace("/ca","");
                    ctx.Request.PathBase = "/ca/";
                    return true;
                }
                return false;
            }, ca =>
            {
                ca.UseSpa(spa =>
                {
                    //rest code
    
                });
            });
    
    推荐文章