Глубокие ссылки Angular2 в AspNetCore без MVC

Я пытаюсь внедрить глубокие ссылки в Angular 2. Я полностью удалил MVC из своего клиента, так как обнаружил, что он мне очень мало предлагает. Однако это означает, что я больше не использую маршрутизатор MVC.

Может кто-нибудь сказать мне, как заставить работать глубокую ссылку Angular 2 без использования MVC?

Мой образец приложения находится по адресу https://github.com/tonywr71/Snazzle.


person tone    schedule 11.09.2016    source источник


Ответы (1)


Вам нужно полагаться на маршрутизатор Angular. В общем, вам нужно обслуживать только index.html (или что-то другое по умолчанию) с вашего сервера для каждого запроса (или вы можете отфильтровать статус 404 и отправить index.html только в этом случае). Angular сделает все остальное.

Чтобы поймать 404 и перенаправить в основном приложении asp.net, вы можете добавить это в свой метод Configure в файле Startup.cs:

app.Use(async (context, next) =>
{
    await next();
    if(context.Response.StatusCode == 404)
    {
        context.Request.Path = "/";
        await next();
    }
});
person rook    schedule 11.09.2016
comment
Да, я знаю, что мне нужно полагаться на маршрутизатор Angular. Но это перехват, о котором мне нужно знать больше. Кроме того, не является ли 404 немного неэффективным, потому что он сначала выполняет проверку, а не перенаправляет все предоставленные извне (не angular2) URL-адреса в одно место? - person tone; 12.09.2016
comment
Я видел этот фрагмент кода, который я поместил в Configure в Startup.cs после вызова UseStaticFiles, но он не сработал: app.Use(async (context, next) => { await next(); if (context. Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value)) { context.Request.Path = /cats-by-owner-gender;// Поместите сюда корневую страницу Angular await next(); } }); - person tone; 12.09.2016
comment
Я обновил свой ответ тем, что отлично работает для меня. - person rook; 12.09.2016
comment
хорошо, я получил это работает. Мне пришлось поместить этот код над оператором UseStaticFiles в моем методе Configure. - person tone; 13.09.2016