Почему URL-адреса href в IIS показывают ошибку HTTP 404.0 - Not Found? (ASP. NET MVC C#) - PullRequest
0 голосов
/ 24 февраля 2020

Я опубликовал свое ASP. NET MVC веб-приложение для IIS, и оно открывает мои первые две страницы (Логин и Домой), однако в моей панели навигации у меня есть несколько меню (ссылки <a>) с href. (например, href = "/ Users / Index")

Когда я открываю свое приложение в браузере, оно показывает: http://localhost/AppName/Home

, когда я нажимаю меню элемент на моей панели навигации не добавляет имя приложения и не отображает мое представление: http://localhost/User/Index

и отправляет HTTP-ошибку 404.0 - не найдено

Очевидно, что если я добавлю AppName вручную, он откроет представление.

Этого не происходит в VS IDE, но когда я публикую sh его в IIS, маршрутизация не работает.

Есть идеи ??

RouteConfig.cs

  public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

Ссылка на Navbar

 <a href="/User/Index" class="dropdown-toggle"> Users</a>

Мой web.config имеет:

 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"></modules>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>
</configuration>

1 Ответ

0 голосов
/ 24 февраля 2020

Обновление!

Следуя совету VeNoMiS, я вставил Url.Action во все пункты меню моей панели навигации, разделив URL-адрес, полученный из базы данных, на каждый параметр (представление, контроллер, область).

Вся маршрутизация из IIS работала отлично.

<a href="@Url.Action(Url.Split('/')[2], Url.Split('/')[1], new { Area = Url.Split('/')[3] })"><span class="@Icon" title="@Icon"></span> @Name</a>

Приветствия

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