Основная карта Asp.Net против MapWhen - PullRequest
0 голосов
/ 09 сентября 2018

В Startup.cs у меня есть рабочий код:

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 Ответ

0 голосов
/ 10 сентября 2018

Для Map и MapWhen, когда используется Map, совпадающие сегменты пути удаляются из HttpRequest.Path и добавляются в HttpRequest.PathBase для каждого запроса. Когда MapWhen используется, это не так.

Для 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

            });
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...