ASP.NET MVC с Angular: - обновление или перезагрузка страницы выдает ошибку 404 - PullRequest
0 голосов
/ 30 мая 2018

Angular Ver: 5

Я работаю над новым проектом с ASP.NET MVC и интегрировал в него Angular 5.Проект работает нормально, за исключением того, что обновление страницы выдает ошибку 404 страница не найдена.Всякий раз, когда я нажимаю кнопку «Обновить» из браузера или перезагружаю страницу, выдается ошибка 404.

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

Я использую общий вид MVC _Layout.cshtml , чтобы указать угловые ссылки на lib и базовую ссылку следующим образом: -

  <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>

    <base href="/">

    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
    @Scripts.Render("~/bundles/bootstrap")

    <script src="~/node_modules/core-js/client/shim.min.js"></script>
    <script src="~/node_modules/zone.js/dist/zone.js"></script>
    <script src="~/node_modules/systemjs/dist/system.src.js"></script>
    <script src="~/Web/systemjs.config.js"></script>
    <script>
        System.import('Web/main.js').catch(function (err) { console.error(err); });
    </script>
</head>
<body>
    @RenderBody()

    @RenderSection("scripts", required: false)
</body>
</html>

Пожалуйста, предложите, где я должен внести изменения.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Другое решение - использовать переписывание URL-адресов IIS для отправки запросов в корень приложения, чтобы позволить Angular router управлять маршрутизацией.Поместив в web.config:

  <rules>
    <rule name="Angular Routes" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
      </conditions>
      <action type="Rewrite" url="/" />
    </rule>

Это правило перезаписи URL переписывает на / каждый URL, который не начинается с / api и не соответствует физическому файлу или папке.

0 голосов
/ 30 мая 2018

В вашем RouteConfig, расположенном в App_Start , измените ваше отображение маршрута на

routes.MapRoute(
     name: "Default",
     url: "{*url}",
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

В основном это будет охватывать все ваши маршруты.

Угловой являетсяСреда SPA, поэтому вам нужен только один экземпляр View, который является вашим HomeController

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