#angular #visual-studio-2015 #asp.net-core #angular2-routing #deep-linking
#angular #visual-studio-2015 #asp.net-core #angular2-маршрутизация #глубокая привязка
Вопрос:
В настоящее время я пытаюсь запустить и запустить приложение angular 2, но у меня возникли некоторые проблемы с основами. На данный момент у меня проблема с глубокими ссылками. Мое приложение можно найти на github здесь и в настоящее время оно является рабочим приложением angular 2. Я также попытался реализовать аутентификацию с использованием токенов-носителей, которые могут мешать.
Итак, проблема с глубокими ссылками заключается в том, что если я нахожусь в приложении и перемещаюсь между страницами, маршрутизатор правильно меняет состояние. Однако, если я попытаюсь ввести URL-адрес страницы, тогда не удастся загрузить эту страницу и перенаправить на страницу входа, как будто я не вошел в систему.
В файле Startup.cs у меня есть следующий код:
//The following code enables angular 2 deep linking
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404
amp;amp; !Path.HasExtension(context.Request.Path.Value))
{
context.Request.Path = "/"; // Angular root page here
await next();
}
});
Этот код получит любой URL-адрес, который он получает, и если в этом месте не найден файл, он перенаправит на путь «/», по которому должен работать маршрутизатор.
Но по какой-то причине он всегда возвращается на страницу входа, вместо перехода на запрошенную фактическую страницу.
Есть идеи, что я делаю не так?
Комментарии:
1. Почему вы вызываете
next()
дважды? Первый уже обработал запрос, зачем вам снова вызывать его в if-блоке?2. Кроме того, как вы настроили свои маршруты? По умолчанию angular использует сегменты пути для навигации. Когда вы нажмете enter, будет выполнен запрос на ASP.NET Основное приложение. В зависимости от вашего маршрута, он не найдет путь, поскольку нет контроллеров, кроме того, который по умолчанию обслуживает приложение. Что вы используете для работы на стороне сервера? JavaScriptServices от Microsoft (это AngularServices или SpaServices)?
3. Хорошо, у меня есть вариант этого кода, который выглядит следующим образом: app.Run(асинхронный контекст => { context.Response. StatusCode = 200; context.Response. ContentType = «text / html»; ожидает context.Response. SendFileAsync(«./wwwroot/index.html «); }); который всегда будет обслуживать индексную страницу.
4. Я использую Microsoft. AspNetCore. AngularServices: «1.0.0».
5. упс, я имею в виду, что я использую Microsoft. AspNetCore. AngularServices: «1.0.0- *». (пропустил звездочку)